У меня есть такой код:Почему метод String.intern() возвращает два разных результата?
public static void main(String[] args) {
String str1 = new StringBuilder("计算机").append("软件").toString();
System.out.println(str1.intern()==str1);
String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern()==str2);
String str3 = new StringBuilder("Str").append("ing").toString();
System.out.println(str3.intern()==str3);
}
и у меня есть результат:
true
false
true
Я могу понять, почему line1 и line3 верно, но я вопрос о line2, почему этот ложно?
Мой Java является: Java версии "1.8.0_73"
, потому что '«ява»', очевидно, уже в постоянной пул, поэтому 'str2.intern()' просто возвращает эту ссылку, которая отличается от новой ссылки 'str2'. – Tom
@Tom Почему «java» уже находится в постоянном пуле? и почему «String» нет? – Timi