public static void main(String[] args) {
String str1 = "UNI:5";
String str2 = "UNI:" + 5;
String str3 = "UNI:" + str1.length();
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str1 == new String(str1));
}
我们得到:
真
假
假
它应该是“虚假虚假”的东西!
答案 0 :(得分:2)
String str1 = "UNI:5";
String str2 = "UNI:" + 5;
这些字符串在编译时完全相同(不涉及未知变量),因此它们将被视为字符串池中的相同值。
由于==
检查它们的引用,它将返回true,因为它们指向相同的条目。
如果您要引入随机功能,它将返回false
,因为无法保证这些功能相同
String str1 = "UNI:5";
String str2 = "UNI:" + getSomething();
private int getSomething() {
return new Random().nextDouble() > 0.5 ? 1 : 5;
}
答案 1 :(得分:0)
请记住==通过引用进行比较。由于两个第一个字符串相等,编译器会将它们优化为同一个实例。
要正确比较字符串,请使用equals()
方法。