มีสองวิธีในการสร้างออบเจ็กต์ String ใน Java:
- โดยใช้ตัวดำเนินการ
new
String str = new String("Tutorials Point");- โดยใช้ String literal
String str = "Tutorials Point";
ทุกครั้งที่เราเรียก new String() ใน Java มันจะสร้างออบเจ็กต์ในหน่วยความจำ Heap และ String literal จะไปอยู่ใน String Constant Pool (SCP)
สำหรับออบเจ็กต์ JVM ใช้ SCP ซึ่งใช้สำหรับการจัดการหน่วยความจำอย่างมีประสิทธิภาพใน Java ไม่เหมือนออบเจ็กต์ Java อื่นๆ แทนที่จะจัดการออบเจ็กต์ String บนพื้นที่ Heap พวกเขาได้นำ String constant pool มาใช้ หนึ่งในลักษณะสำคัญของ String constant pool คือ มันไม่สร้างออบเจ็กต์ String เดียวกันซ้ำ หากมี String constant นั้นอยู่ใน pool แล้ว
ตัวอย่าง
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