Comments 10
Это одно из существенных изменений, внесенных в JDK 5Об этом правда стоит писать в 2017?
Лучше бы написали о возможных NPE при анбоксинге. Далеко не все об этом помнят.
В первом объекты не создаются, а берутся из pool и классы-обёртки имеют одну ссылку. В третьем же создаётся два объекта, потому что 200 не входит в диапазон Integer pool (-128..127), то есть у них разные ссылки. Если у примитивных типов оператор == сравнивает значение (если необходимо, операнды распространяются до наибольшего, затем происходит непосредственное побитовое сравнение), то у объектов проверяет указывают ли ссылки «на один и тот же объект».
Таки почему «из так называемого pool»? Никто его так не называет. Это так называемый integer cache — кэш целых чисел. И в документации, и в исходниках это называется кэш.
вызывается статичный метод java.lang.Integer.valueOf(int), который кэширует значения от -128 до 127
Никакого кэшировани при вызове не будет происходить. IntegerCache
инициализируется во время загрузки класса.
Integer iOb1 = 100;
Integer iOb2 = 100;
System.out.println(iOb1 == iOb2);
Integer iOb3 = new Integer(120);
Integer iOb4 = new Integer(120);
System.out.println(iOb3 == iOb4);
Integer iOb5 = 200;
Integer iOb6 = 200;
System.out.println(iOb5 == iOb6);
Ответ: в первом случае — true, во втором и третьем — false
А в чем разница между 1 и 3 случаями?
Sign up to leave a comment.
Autoboxing и unboxing в Java