Sobes.tech
Назад к вопросам
Principal
16

public class Main { public static void main(String[] args) { Integer a = 127; Integer b = 127; Integer c = 128; Integer d = 128; System.out.println(a == b); System.out.println(c == d); } }

Компании, где спрашивали
Black Wall Group

Ответ от нейросети

sobes.tech AI

В Java при сравнении объектов типа Integer с помощью == сравниваются ссылки, а не значения. Однако для значений в диапазоне от -128 до 127 существует кэширование объектов (Integer Cache).

В вашем примере:

  • a и b равны 127, оба ссылаются на один и тот же объект из кэша, поэтому a == b будет true.
  • c и d равны 128, выходят за пределы кэша, поэтому создаются разные объекты, и c == d будет false.

Если нужно сравнить значения, следует использовать метод .equals():

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