Пожалуйста, объясните этот очень запутанный путь String String Works WorksJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Пожалуйста, объясните этот очень запутанный путь String String Works Works

Сообщение Anonymous »

Судя по следующему результату, string.intern () , кажется, работает как магия.

Код: Выделить всё

public static void main (String[] args) throws java.lang.Exception
{
String s2=new String(new String("one").concat("two"));
// If you uncomment the following line, it prints false, as expected.
// boolean dummy = s2 == "onetwo";
s2.intern();
System.out.println(s2 == "onetwo");
}
и почему он печатает «false», когда вы не расстроены то, что выглядит как безобидное утверждение? Или, если он уже был в бассейне, он вернул саму строку. Но в этой программе мы не делаем s2 = s2.intern (); мы просто делаем s2.intern () и выбрасываем результат. Таким образом, S2 будет иметь ту же идентичность, что и у него перед вызовом intern () , и должен ссылаться на объект в куче (поскольку он инициализируется новым ), в то время как буквальная строка является ссылкой на объект в постоянном пуле и, следовательно, == всегда должна возвращать false.

Подробнее здесь: https://stackoverflow.com/questions/797 ... tern-works
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»