Tôi có các dòng mã sau để so sánh Chuỗi. str1 không bằng str2, có thể hiểu được vì nó so sánh tham chiếu đối tượng. Nhưng tại sao s1 bằng s2?Điều gì làm cho so sánh tham chiếu (==) hoạt động đối với một số chuỗi trong Java?
String s1 = "abc";
String s2 = "abc";
String str1 = new String("abc");
String str2 = new String("abc");
if (s1==s2)
System.out.println("s1==s2");
else
System.out.println("s1!=s2");
if (str1==str2)
System.out.println("str1==str2");
else
System.out.println("str1!=str2");
if (s1==str1)
System.out.println("str1==s1");
else
System.out.println("str1!=s1");
Output:
s1==s2
str1!=str2
str1!=s1
Bạn đã thử tìm kiếm SO đầu tiên? :( –
http://stackoverflow.com/questions/7144059/java-string-pool-object-creation, http://stackoverflow.com/questions/4033625/if-compares-references-in-java-why-does -it-evaluation-to-true-with-these-strin, http://stackoverflow.com/questions/6377058/string-reference, http://stackoverflow.com/questions/1903094/java-strings-and-stringpool –
(Tôi không đóng này, bởi vì tôi đã không tìm thấy một câu hỏi khác * như tập trung * như thế này, nhưng tôi chắc chắn nó tồn tại) –