👩‍💻 Скрытые риски автобоксинга и анбоксинга



Сегодня мы рассмотрим одну из скрытых ловушек Java — автобоксинг и анбоксинг. Эти механизмы удобны, но могут вызывать неожиданные ошибки, влияя на производительность и корректность работы кода:



При сравнении объектов-оберток (например, Integer) с использованием оператора == вы можете получить неожиданный результат

Integer a = 127;

Integer b = 127;

System.out.println(a == b); // true



Integer c = 128;

Integer d = 128;

System.out.println(c == d); // false




Значения от -128 до 127 кешируются JVM для оберток Integer. Поэтому ссылки на объекты с такими значениями указывают на один и тот же объект, а вне этого диапазона создаются новые экземпляры.



Используйте метод .equals() для сравнения значений.

System.out.println(c.equals(d)); // true




А при анбоксинге объекта-обертки, содержащего null, возникает NullPointerException

Integer value = null;

int result = value; // Ошибка: NullPointerException




Проверяйте объект на null перед анбоксингом:

if (value != null) {

int result = value;

}




🔥 Эти знания помогут вам избежать неожиданных ошибок и сделать код более надежным.



📣 Java Ready | #практика