Java中的println()方法用于字符串相等...以及它是如何工作的?

时间:2016-06-24 08:42:57

标签: java string

我试图理解Java中的System.out.println()的工作...在以下2个代码片段中,为什么答案不同以及为什么它不打印"你好:" println()方法中的字符串?

 public static void main(String[] args) {
        String x = "abc";
        String y = "abc";
        System.out.println("Hello:" + x == y);
        System.out.println("x.equals(y): " + x.equals(y));

        if(x == y){
            System.out.println("Hello:" + x==y);
        }

}

答案是:

false
x.equals(y): true
false

第二段代码:

 public static void main(String[] args) {
        String x = "abc";
        String y = "abc";

        System.out.println( x == y);

        System.out.println("x.equals(y): " + x.equals(y));

        if(x == y){
            System.out.println(x==y);
        }

}

答案是:

true
x.equals(y): true
true

2 个答案:

答案 0 :(得分:12)

这归因于operator precedenceapp.local/belakang相当于"Hello:" + x == y

因为("Hello:" + x) == y的优先级高于+

答案 1 :(得分:2)

第一个返回false,因为+运算符的优先级高于==运算符,如果更换代码,它也将返回true  System.out.println("Hello:" + (x == y));

你也可以参考这里的==和equals方法的区别 What is the difference between == vs equals() in Java?

因为我也会说同样的。

并且对于运算符优先级,请看这个..
http://introcs.cs.princeton.edu/java/11precedence/