String Pool

String Pool

2020, May 04    

Giải thích hoạt động của kiểu dữ liệu String trong Java.

  • Tạo String bằng String str1 = “abc”;
    • JMV sẽ kiểm tra và tạo mới một object nếu chưa có trong String pool.
String str1 = "abc";
String str2 = "abc";
System.out.println("Compare str1==str2: " + (str1==str2)); 
$ mvn clean package
$ java -jar string-pool/target/string-pool-0.0.1-SNAPSHOT.jar
Compare str1==str2: true

return true, str1 và str2 tham khảo đến 1 object trong String constant pool.

  • Tạo String bằng String str3 = new String(“abc”);
    • Tạo một object trong String pool
    • Tạo thêm một object trong vùng nhớ Heap, và tham khảo đến object trong String pool
String str3 = new String("abc");
String str4 = new String("abc");
System.out.println("Compare str3==str4: " + (str3==str4));
$ mvn clean package
$ java -jar string-pool/target/string-pool-0.0.1-SNAPSHOT.jar
Compare str3==str4: false

return false, bởi vì str3 tham khảo đến object ngoài pool(non-pool).

  • So sánh giá trị 2 biến String bằng toán tử equal
System.out.println("Compare value str1.equals(str3): " + (str1.equals(str3)));
$ mvn clean package
$ java -jar string-pool/target/string-pool-0.0.1-SNAPSHOT.jar
Compare value str1.equals(str3): true