Назад к вопросам
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