[英]Unexpected result in String Comparison In java?
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));
}
}
为什么上面的代码产生输出
“假”
-------结果是----- true
首先,您不应该将字符串与==
进行比较,而应与equals()
进行比较。
还有运算符优先级的问题。 这个:
"-------The result is-----"+ s1==s2
是相同的:
("-------The result is-----"+ s1) == s2
因为+
优先级高于==
。
比较字符串时,由于.equals()
比较字符串的内容或用于比较对象,因此.equals()
==
更改为.equals()
。 ==
检查引用是否相等或用于比较基元。 我在下面更改了您的代码:
System.out.println("-------The result is-----"+ (s1.equals(s2)));
您正在比较s1
和s2
的引用,并且由于分别定义了它们,因此它们没有相同的引用。 要比较字符串,请使用equals
或equalsIgnoreCase
'+' > '=='
所以
"-------The result is-----"+ s1==s2
变为
("-------The result is-----"+ s1)==s2
,因此为假。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.