我一直在使用 JShell 来测试它,今天我遇到了相当有趣的行为。
jshell> String a = "A"
a ==> "A"
jshell> String b = "A"
b ==> "A"
jshell> a == b
$4 ==> true
jshell> "A" == "A"
$5 ==> true
我首先想知道这是否是 Java 9 的一个特性,我通过使用 Java 9 编译和运行这个程序来检查它
public class Equus {
public static void main(String... args) {
String a = "A";
String b = "A";
System.out.println("a == b");
System.out.println(a == b);
System.out.println("\"A\" == \"A\"");
System.out.println("A" == "A");
}
}
有趣的是我得到了
a == b true "A" == "A" true
作为我的输出也是如此。这里发生了什么?为什么彼此相等,为什么是a
真的?b
"A" == "A"