Java string == Vs Equals在与串联组合时给出true或false
我肯定错过了一些东西
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指的是相同的内存位置,那么这是因为字符串文字池的概念。
老兄你不应该使用==进行字符串比较而是使用equals方法。
string1.equals(string2)
+
opertator具有更高的预测性然后==所以你做“s1 == s2是:abc”到“abc”。
注意,使用equal或equalIgnoreCase来比较String总是因为==总是比较引用