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

เหตุใด String ตัวอักษรจึงถูกเก็บไว้ใน String Constant Pool ใน Java


มีสองวิธีในการสร้างวัตถุสตริงใน Java

  • โดยใช้โอเปอเรเตอร์ใหม่
String str = new String("Tutorials Point");
  • โดยใช้ตัวอักษรสตริง
String str = "Tutorials Point";

เมื่อใดก็ตามที่เราเรียกสตริงใหม่ () ใน Java มันจะสร้างวัตถุในหน่วยความจำฮีปและตัวอักษรสตริงจะเข้าสู่ String Constant Pool (SCP)

สำหรับวัตถุ JVM ใช้ SCP ซึ่งใช้สำหรับการจัดการหน่วยความจำที่มีประสิทธิภาพใน Java ไม่เหมือนกับอ็อบเจ็กต์ Java อื่น แทนที่จะจัดการอ็อบเจ็กต์ String บนพื้นที่ฮีป พวกเขาแนะนำพูลค่าคงที่ของ String คุณลักษณะที่สำคัญอย่างหนึ่งของพูลค่าคงที่สตริงคือจะไม่สร้างอ็อบเจ็กต์ String เดียวกันหากมีค่าคงที่สตริงในพูลแล้ว

ตัวอย่าง

public class SCPDemo {
   public static void main (String args[]) {
      String s1 = "Tutorials Point";
      String s2 = "Tutorials Point";
      System.out.println("s1 and s2 are string literals:");
      System.out.println(s1 == s2);
      String s3 = new String("Tutorials Point");
      String s4 = new String("Tutorials Point");
      System.out.println("s3 and s4 with new operator:");
      System.out.println(s3 == s4);
   }
}

ผลลัพธ์

s1 and s2 are string literals:
true
s3 and s4 with new operator:
false