Назад к вопросам
JuniorТеорияЧасто
Что выведет программа (строки через пробел)?
public class Main {
public static void main(String[] args) {
Integer a = 20;
Integer b = 20;
Integer c = 200;
Integer d = 200;
System.out.println(a == b);
System.out.println(c == d);
System.out.println(c.equals(d));
}
}true false true
- Ждать
trueдляc == d:==для двухIntegerсравнивает ссылки, а упаковка200каждый раз создаёт новый объект. - Ждать
falseдляa == b:Integer.valueOfотдаёт для чисел от-128до127один объект из кэша, и оба20ведут к нему.
- Что даст
c == 200, еслиc—Integerсо значением200? - Почему два
Integerнадёжно сравнивать черезequals?