java字符串== vs等于在与串联结合使用时给出真或错误



我肯定缺少一些东西

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始终比较字符串,因为==始终比较参考

相关内容

最新更新