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

Interning of String ใน Java


การฝึกงานสตริงเป็นกระบวนการที่จัดเก็บสำเนาเดียวของค่าสตริงที่แตกต่างกันทุกค่า นอกจากนี้ยังไม่สามารถเปลี่ยนสายอักขระได้เช่นกัน ด้วยวิธีนี้ สตริงสามารถมีข้อมูลเดียวกันและใช้หน่วยความจำร่วมกันได้ วิธีนี้จะทำให้หน่วยความจำที่ต้องการลดลงอย่างมาก

เมื่อเรียกใช้ฟังก์ชัน 'ฝึกงาน' −

  • โดยจะตรวจสอบความเท่าเทียมกันระหว่างสองสตริง ไม่ว่าวัตถุสตริงจะมีอยู่ในพูลค่าคงที่สตริง (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 มีฟังก์ชันหลัก มีการกำหนดอินสแตนซ์ของวัตถุสตริงสามอินสแตนซ์ โดยที่สตริงที่สองคือการต่อกันของสตริงแรกด้วยค่าอื่น สตริงที่สามคือการเรียกใช้ฟังก์ชัน 'ฝึกงาน' ในสตริงที่สอง สตริงเหล่านี้เปรียบเทียบโดยใช้ตัวดำเนินการ '==' และผลลัพธ์จะแสดงบนคอนโซล