В чем разница между назначением и созданием объекта
Допустим, мы делаем
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
учебный класс.