我正在玩 Strings 以更多地了解它们,我注意到一些我无法解释的东西:
String str1 = "whatever";
String str2 = str1;
String str3 = "whatever";
System.out.println(str1==str2); //prints true...that's normal, they point to the same object
System.out.println(str1==str3); //gives true..how's that possible ?
最后一行如何给出 true ?这意味着 str1 和 str3 在内存中具有相同的地址。
这是一个足够聪明的编译器优化,可以检测到两个字符串文字是相同的(“whatever”),因此将 str1 和 str3 分配给同一个对象?还是我在字符串的底层机制中遗漏了一些东西?