以前从未使用过 Java,我正在自学泛型语法。我正在用一些字符串测试简单的泛型函数,并注意到一些奇怪的东西:
public class Main {
public static <T> boolean areSameReference(T lhs, T rhs) {
return lhs == rhs;
}
public static void main(String[] args) {
String s = new String("test1");
String t = s;
String u = new String("test1");
System.out.println(areSameReference(s, t)); //true
System.out.println(areSameReference(s, u)); //false
String v = "test2";
String w = "test2";
System.out.println(areSameReference(v, w)); //true
}
}
为什么 [s] 和 [u] 是不同的引用,而 [v] 和 [w] 是相同的引用?我原以为无论有没有“新”,字符串文字都会导致它们在两种情况下始终相同或不同。
我错过了这里发生的其他事情吗?