public class HelloWorld {
public static void main(String[] args) {
String s1="yes";
String s2="yes";
System.out.println("-------The result is-----"+ s1==s2);
System.out.println("-------The result is-----"+ (s1==s2));
}
}
为什么上面的代码产生输出
"假"
-------结果是-----真实
答案 0 :(得分:5)
首先,您不应将字符串与==
进行比较,而应与equals()
进行比较。
还有运营商优先权的问题。这样:
"-------The result is-----"+ s1==s2
与:
相同("-------The result is-----"+ s1) == s2
因为+
的优先级高于==
。
答案 1 :(得分:0)
当您比较字符串时,您应该将==
更改为.equals()
,因为.equals()
将字符串的内容相互比较或用于比较对象。 ==
检查引用相等性或用于比较原语。我在下面更改了您的代码:
System.out.println("-------The result is-----"+ (s1.equals(s2)));
答案 2 :(得分:0)
您正在比较s1
和s2
的引用,并且由于您单独定义它们,因此它们没有相同的引用。要比较字符串,请使用equals
或equalsIgnoreCase
答案 3 :(得分:0)
'+' > '=='
所以
"-------The result is-----"+ s1==s2
变为
("-------The result is-----"+ s1)==s2
因而错误。