我有以下几行代码来比较字符串。 str1不等于str2,这是可以理解的,因为它比较了对象引用。但为什么s1等于s2?什么使参考比较(==)适用于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");
输出:
s1==s2
str1!=str2
str1!=s1
你尝试搜索SO第一? :( – 2012-03-14 17:44:28
http://stackoverflow.com/questions/7144059/java-string-pool-object-creation,http://stackoverflow.com/questions/4033625/if-compares-references-in-java-why-does -it-evaluate-to-true-with-these-strin,http://stackoverflow.com/questions/6377058/string-reference,http://stackoverflow.com/questions/1903094/java-strings-and-stringpool – 2012-03-14 17:45:56
(我没有关闭这个,因为我还没有发现另一个问题*因为这个焦点*,但我确信它存在) – 2012-03-14 17:49:17