以下代码片段中的代码仅比较字符串引用。
String str1 = "mystring9";
String str2 = "mystring"+String.valueOf(9);
System.out.println(str1==str2);
在本例中,str1==str2
返回false
.
以下代码段还返回 false
.
String str1 = "mystring9";
String str2="mystring"+str1.length();
System.out.println(str1==str2);
<小时/>
但是,以下代码返回 true
.
String str1 = "mystring9";
String str2 = "mystring"+9;
System.out.println(str1==str2);
我认为,表达式 "mystring"+9
在此代码中应在内部评估为 String.valueOf(9)
但是为什么前两个示例返回的输出与前面的示例不同?
最佳答案
Java 编译器将预先评估所有仅常量操作。 (这称为 constant folding )
因此,"A"+ "b"+ 3
编译为 "Ab3"
。
关于java - 比较 Java 中的字符串引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592301/