การฝึกงานสตริงเป็นกระบวนการที่จัดเก็บสำเนาเดียวของค่าสตริงที่แตกต่างกันทุกค่า นอกจากนี้ยังไม่สามารถเปลี่ยนสายอักขระได้เช่นกัน ด้วยวิธีนี้ สตริงสามารถมีข้อมูลเดียวกันและใช้หน่วยความจำร่วมกันได้ วิธีนี้จะทำให้หน่วยความจำที่ต้องการลดลงอย่างมาก
เมื่อเรียกใช้ฟังก์ชัน 'ฝึกงาน' −
-
โดยจะตรวจสอบความเท่าเทียมกันระหว่างสองสตริง ไม่ว่าวัตถุสตริงจะมีอยู่ในพูลค่าคงที่สตริง (SCP) หรือไม่
-
หากมี สตริงจะถูกส่งคืนโดยดึงจากพูล มิฉะนั้น วัตถุสตริงใหม่จะถูกสร้างขึ้นและเพิ่มลงในพูล การอ้างอิงถึงวัตถุสตริงนี้จะถูกส่งคืนเช่นกัน
-
ถ้าสำหรับสองสตริง 'a' และ 'b' a.intern() ==b.intern() เป็นจริง iff a.equals(b) คืนค่า true
เรามาดูตัวอย่างกัน −
ตัวอย่าง
public class Demo{ public static void main(String[] args){ String s1 = new String("Its"); String s2 = s1.concat("sample"); String s3 = s2.intern(); System.out.println("Checking equality of object 2 and 3 :"); System.out.println(s2 == s3); String s4 = "Its a sample"; System.out.println("Checking equality of object 3 and 4 :"); System.out.println(s3 == s4); } }
ผลลัพธ์
Checking equality of object 2 and 3 : true Checking equality of object 3 and 4 : false
คลาสชื่อ Demo มีฟังก์ชันหลัก มีการกำหนดอินสแตนซ์ของวัตถุสตริงสามอินสแตนซ์ โดยที่สตริงที่สองคือการต่อกันของสตริงแรกด้วยค่าอื่น สตริงที่สามคือการเรียกใช้ฟังก์ชัน 'ฝึกงาน' ในสตริงที่สอง สตริงเหล่านี้เปรียบเทียบโดยใช้ตัวดำเนินการ '==' และผลลัพธ์จะแสดงบนคอนโซล