String s5="Ram";
String s6="Ram";
System.out.println(" s5==s6 is " + s5==s6); // false
System.out.println(s5==s6); // true
为什么第一行总是false
而第二行总是true
?
答案 0 :(得分:4)
因为+
的优先级高于==
,
" s5==s6 is "+s5==s6
评估为
" s5==s6 is Ram"=="Ram"
这显然是错误的。您可以通过使用括号来避免此特定问题:
" s5==s6 is "+(s5==s6)
同时
s5==s6
评估为
"Ram"=="Ram"
这是真的,只是因为Java中字符串文字的自动中间化。如果对这些字符串之一进行评估而不是对文字进行评估,那将是错误的,因为==
将比较对象标识,并且即使两个不同的String对象具有相同的内容,也将被评估为不同。比较
String s5 = new String("Ram");
String s6 = new String("Ram");
System.out.println(s5==s6); //false
使用.equals
对字符串内容进行有意义的比较:
System.out.println(s5.equals(s6)); //true