Computer >> Máy Tính >  >> Lập trình >> Java

Tại sao chuỗi ký tự được lưu trữ trong String Constant Pool trong Java?


Có hai cách để tạo đối tượng Chuỗi trong Java

  • Bằng cách sử dụng toán tử mới
String str = new String("Tutorials Point");
  • Bằng cách sử dụng chuỗi ký tự
String str = "Tutorials Point";

Bất cứ khi nào chúng ta gọi String mới () trong Java, nó sẽ tạo một đối tượng trong bộ nhớ heap và các ký tự của String sẽ đi vào String Constant Pool (SCP).

Đối với các đối tượng, JVM đã sử dụng SCP để quản lý bộ nhớ hiệu quả trong Java. Không giống như các đối tượng Java khác, thay vì quản lý đối tượng String trên vùng heap, họ đã giới thiệu nhóm hằng số String. Một trong những đặc điểm quan trọng của nhóm hằng chuỗi là nó không tạo cùng một đối tượng String nếu đã có hằng số chuỗi trong nhóm.

Ví dụ

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);
   }
}

Đầu ra

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