Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราจะใช้วิธี intern() ของคลาส String ใน Java ได้เมื่อใด


วิธีการ ฝึกงาน() ของ คลาสสตริง สามารถใช้เพื่อจัดการกับปัญหาการทำซ้ำสตริง ในชวา ใช้ ฝึกงาน() เราสามารถบันทึกหน่วยความจำจำนวนมากที่ใช้โดยอินสแตนซ์สตริงที่ซ้ำกัน . สตริงจะซ้ำกันหากมีเนื้อหาเดียวกันกับสตริงอื่น แต่สามารถครอบครองตำแหน่งหน่วยความจำที่แตกต่างกันได้

เรารู้ว่า JVM รักษาหน่วยความจำฮีปแยก สำหรับตัวอักษรสตริงสำหรับการแสดง เมื่อเราประกาศสตริงตามตัวอักษร มันจะไปที่ พูล และหากตัวแปรอื่นถูกกำหนดด้วยค่าตัวอักษรเดียวกัน ตัวแปรนั้นจะถูกเลือกจากกลุ่ม แทนที่จะสร้างวัตถุใหม่ และเก็บไว้ใน ฮีป . แต่ถ้าสตริงถูกประกาศโดยใช้ โครงสร้างใหม่ r วัตถุใหม่จะถูกสร้างขึ้นแม้ว่าจะมีตัวอักษรอยู่ในพูลก็ตาม เพื่อหลีกเลี่ยงปัญหานี้และบังคับให้ JVM เลือกตัวอักษรจากพูล เราใช้ ฝึกงาน() วิธีการ

Java จะฝึกสตริงทั้งหมดโดยอัตโนมัติตามค่าเริ่มต้น ฝึกงาน() สามารถใช้เมธอดในสตริงที่มี n ew String() เพื่อเปรียบเทียบโดย ==โอเปอเรเตอร์

ตัวอย่าง

<ก่อน> คลาสสาธารณะ StringInternClassTest { โมฆะสาธารณะหลัก (สตริง [] args) { สตริง s1 ="Tutorix"; สตริง s2 ="Tutorix"; สตริง s3 =สตริงใหม่ ("Tutorix"); สตริงสุดท้าย s4 =s3.intern(); สตริง s5 ="?Tutorix".substring(1); สตริง s6 =s5.intern(); System.out.println(s1 ==s2); System.out.println(s2 ==s3); System.out.println(s3 ==s4); System.out.println(s1 ==s3); System.out.println(s1 ==s4); System.out.println(s1 ==s5); System.out.println(s1 ==s6); System.out.println(s1.equals(s2)); System.out.println(s2.equals(s3)); System.out.println(s3.equals(s4)); System.out.println(s1.equals(s4)); System.out.println(s1.equals(s3)); }}

ผลลัพธ์

truefalsefalsefalsefalsetruefalsetruetruetruetruetruetrue ทรู