Tôi có một câu hỏi về một số hành vi của nhóm String lạ. Tôi đang sử dụng ==
để so sánh các Chuỗi bằng nhau để tìm hiểu xem chúng có nằm trong hồ bơi hay không.Hành vi chung của chuỗi lạ
public class StringPoolTest {
public static void main(String[] args) {
new StringPoolTest().run();
}
String giveLiteralString() {
return "555";
}
void run() {
String s1 = giveLiteralString() + "";
System.out.println("555" == "555" + "");
System.out.println(giveLiteralString() == giveLiteralString() + "");
}
}
Đầu ra là:
true
false
mà là một bất ngờ lớn đối với tôi. Bất cứ ai có thể giải thích điều này xin vui lòng? Tôi nghĩ rằng một cái gì đó về việc này đang diễn ra tại thời gian biên dịch. Nhưng tại sao thêm ""
vào một Chuỗi tạo ra bất kỳ sự khác biệt nào?
@MarkoTopolnik Giống như tôi. – johnchen902
@MarkoTopolnik Tôi biết câu hỏi hơi khác một chút. Nhưng câu trả lời luôn giống như "XXX là hằng số biên dịch, trong khi YYY không phải là". Có lẽ tôi đã chọn một câu hỏi sai. – johnchen902
@ johnchen902 Tôi đồng ý, nhưng bạn đã đăng câu hỏi sai là trùng lặp :-) – Thihara