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

ani*_*etk 7 java string

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

 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);
        }

}
Run Code Online (Sandbox Code Playgroud)

答案是:

false
x.equals(y): true
false
Run Code Online (Sandbox Code Playgroud)

对于第二个代码片段:

 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);
        }

}
Run Code Online (Sandbox Code Playgroud)

答案是:

true
x.equals(y): true
true
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 12

这是由于运算符优先级:"Hello:" + x == y相当于("Hello:" + x) == y.

因为+优先级高于==.