我肯定缺少一些东西
public static void main(String []args){
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);//gives true
}
public static void main(String []args){
String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2 is:" + s1 == s2); //gives false
}
与操作员的优先级有关?
是的,+
运算符比==
更高,因此您将字符串"s1 == s2 is:abc"
与"abc"
进行比较。您始终可以使用括号强制执行明确的操作顺序。
是的。它被评估为:
("s1 == s2 is:" + s1) == s2
其他人回答的是' '运算符的优先级,其优先级比'=='。如果您将比较包含在括号中的比较,例如
System.out.println("s1 == s2 is"+(s1 == s2));
上面的语句将为真实,因为括号的优先级高于 。
如果您觉得为什么字符串S1和S2指的是相同的内存位置,则是因为字符串字面池概念。
花花公子,您不应该使用==字符串比较而不是使用等价方法。
string1.equals(string2)
+
opertator的前端==,因此您正在执行" s1 == s2 is:abc" to" abc"。
请注意,使用相等或quealignorecase始终比较字符串,因为==始终比较参考