在System.out.println中使用str1 == str2只打印true或false但不打印随之写入的任何文本

Des*_*tor -2 java

这就是我在说的:

package finalExample;

public class FinalExample {

public static void main(String args[]) {

    final String str1 = "str";
    final String str2 = "ing";

    String str11 = "str";
    String str22 = "ing";

    System.out.println("Using equals() for non final :" + str11.equals(str22));
    System.out.println("Using == for non final :" + (str11==str22));
    System.out.println("MAGIC Using == for non final :" + str11==str22);

    System.out.println("Using equals() for final :" + str1.equals(str2));
    System.out.println("Using == for final :" + (str1==str2));
    System.out.println("MAGIC Using == for final :" + str1==str2);
}
Run Code Online (Sandbox Code Playgroud)

}

输出是:

Using equals() for non final :false
Using == for non final :false
false
Using equals() for final :false
Using == for final :false
false
Run Code Online (Sandbox Code Playgroud)

MAGIC声明均未打印.为什么会这样?

chr*_*ke- 11

+运营商绑定在比更高的优先级==运营商,所以你的表达式为:

"MAGIC Using == for final :" + str1==str2
("MAGIC Using == for final :" + str1)==str2
(a new String object created for the comparison can't)==str2
false
Run Code Online (Sandbox Code Playgroud)