Ngoài những gì đã nói, các chuỗi ký tự [tức là các chuỗi giống "abcd"
nhưng không giống new String("abcd")
] trong Java được thực hiện - điều này có nghĩa là mỗi khi bạn tham chiếu đến "abcd", bạn sẽ nhận được tham chiếu đến một phiên bản duy nhất String
, thay vì một phiên bản mới mỗi lần. Vì vậy, bạn sẽ có:
String a = "abcd";
String b = "abcd";
a == b; //True
nhưng nếu bạn có
String a = new String("abcd");
String b = new String("abcd");
thì có thể có
a == b; // False
(và trong trường hợp bất kỳ ai cần nhắc nhở, hãy luôn sử dụng .equals()
để so sánh các Chuỗi; ==
kiểm tra sự bình đẳng vật lý).
Interning chuỗi ký tự là tốt vì chúng thường được sử dụng nhiều hơn một lần. Ví dụ: hãy xem xét mã (tiếp theo):
for (int i = 0; i < 10; i++) {
System.out.println("Next iteration");
}
Nếu chúng ta không có quá trình thực hiện các Chuỗi, thì "Lần lặp tiếp theo" sẽ cần phải được khởi tạo 10 lần, trong khi bây giờ nó sẽ chỉ được khởi tạo một lần.