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