繁体   English   中英

java中字符串比较的意外结果?

[英]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)));

您正在比较s1s2的引用,并且由于分别定义了它们,因此它们没有相同的引用。 要比较字符串,请使用equalsequalsIgnoreCase

'+' > '=='

所以

"-------The result is-----"+ s1==s2变为

("-------The result is-----"+ s1)==s2 ,因此为假。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM