Java 为什么优化功能会';下两次打印时是否显示nt?

Java 为什么优化功能会';下两次打印时是否显示nt?,java,string,Java,String,我们得到: 真的 假的 剥皮 它应该是“假剥皮假”之类的东西 这些字符串在编译时完全相同(不涉及未知变量),因此它们将在字符串池中被视为相同的值 因为==检查它们的引用,所以它将返回true,因为它们指向相同的条目 如果要引入随机化特性,它将返回false,因为不能保证这些特性是相同的 String str1 = "UNI:5"; String str2 = "UNI:" + 5; 记住==通过引用进行比较。由于前两个字符串相等,编译器将对它们进行优化,使其成为同一个实例 要正确比较字符串,请


我们得到:
真的
假的
剥皮
它应该是“假剥皮假”之类的东西

这些字符串在编译时完全相同(不涉及未知变量),因此它们将在字符串池中被视为相同的值

因为
==
检查它们的引用,所以它将返回true,因为它们指向相同的条目

如果要引入随机化特性,它将返回
false
,因为不能保证这些特性是相同的

String str1 = "UNI:5";
String str2 = "UNI:" + 5;

记住==通过引用进行比较。由于前两个字符串相等,编译器将对它们进行优化,使其成为同一个实例


要正确比较字符串,请使用
equals()
方法。

为什么您认为它们都应该为false?因为正如Johan所说:“记住==通过引用进行比较”!!所以我认为它应该打印错误:(
String str1 = "UNI:5";
String str2 = "UNI:" + 5;
String str1 = "UNI:5";
String str2 = "UNI:" + getSomething();

private int getSomething() {
   return new Random().nextDouble() > 0.5 ? 1 : 5;
}