Nên khởi tạo String bằng new hay dùng string pool?

Em mới học Java và biết được một thứ gọi là String pool. Mọi người cho em hỏi là lúc nào thì nên khởi tạo String bằng new và lúc nào thì nên dùng String pool ạ?

    String s1 = "new string";
    String s2 = new String("new string");
1 Like

Lúc nào dùng được pool thì dùng, không thể dùng pool thì mới dùng new.

6 Likes

Tùy thuộc vào muc đích của bạn.
Literal trong Java sử dụng String pool có dạng:

String str1 = "Hello World";
String str2 = "Hello World";

Thì cả 2 biến str1 và str2 đều trỏ tới cùng 1 địa chỉ trên heap có giá trị “Hello world” (singleton design pattern).

Còn khi dùng new operator thì ngay cả khi giá trị 2 strings là giống nhau thì JVM cũng tạo 2 objects khác biệt.

String str1 = "Hello World";
String str2 = "Hello World";

String str3= new String("Hello World");
String str4= new String("Hello World");

System.out.println(str1 == str2); // True
System.out.println(str3 == str4); // False
8 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?