Я пробовал под кодом:
public class TestIntern {
public static void main(String[] args) {
char[] c1={'a','b','h','i'};
String s1 = new String(c1);
s1.intern();
String s2="abhi";
System.out.println(s1==s2);//true
char[] c2={'j','a','v','a'};
String sj1 = new String(c2);
sj1.intern();
String sj2="java";
System.out.println(sj1==sj2);//false
char[] c3={'J','A','V','A'};
String tj1 = new String(c3);
tj1.intern();
String tj2="JAVA";
System.out.println(tj1==tj2);//true
}
}
Я пробовал много разных литералов.
Может ли кто-нибудь объяснить, почему intern()
не работает должным образом с буквальным "java"
? Почему приведенные выше сравнительные сравнения оцениваются как true
, за исключением случаев, когда литерал является "java"
?