В чем разница между назначением и созданием объекта

Допустим, мы делаем

String s=new String ("test");
String s="test";

А также

Integer i=new Integer(10);
Integer i=10;

В чем разница?

2 ответа

String s=new String ("test") >> Всегда будет создавать новый экземпляр.

String s = "test" >> Если строковый литерал "test" уже присутствует в пуле строк ( Java Heap), ссылка s будет указывать на этот литерал, новый экземпляр не будет создан. Пожалуйста, обратитесь к изображению ниже для большей ясности.

Целое число i= новое целое число (10);

Целое число i=10;

В чем разница?

Integer i = new Integer(10);

Вышеупомянутое утверждение создает недавно созданный Integer объект, который представляет указанный int значение. i является ссылочной переменной, и новый Integer(10) создает объект типа Integer со значением int 10и присваивает ссылку на этот объект переменной i,

Более подробная информация о Integer на: java.lang.Integer


Рассмотрим утверждение:

Integer i = 10;

Результат такой же, как и у более ранней конструкции; объект целочисленной обертки создан. Это просто удобный синтаксис. Например, посмотрите следующий код:

Integer i = new Integer(10);
System.out.println(++i); // this prints 11

Там нет такого синтаксиса, как ++ в java.lang.Integer определение класса. Что здесь происходит?

Заявление ++i, распаковывает Integer для intвыполняет ++ операция на int значение, а затем упаковывает его обратно - что приводит к целому числу объекта с int значение увеличивается с 10 в 11, Эта функция называется Autoboxing; обратите внимание, что эта функция была введена в Java 5.

ПРИМЕЧАНИЕ. Вышеприведенное пояснение не относится к вопросу, заданному в этом сообщении относительно String учебный класс.

Другие вопросы по тегам