public class IntegerVsInt {
public static void main(String args[])
{
int a = 1;
int b = 1;
int c = a + b;
System.out.println(c);
System.out.println(a == b);
Integer x = 1;
Integer y = 1;
Integer z = x + y;
System.out.println(z);
System.out.println(x == y);
}
}
В приведенном выше коде я сравниваю два int и два объекта типа integer.java: class Integer == operator странное поведение
Если сравнить два, чтобы сравнить INT в
a == b
Я бы ожидать, что их значения.
Однако, если сравнить два Integer-х
x == y
я ожидал бы адрес двух сравниваемых объектов, а затем возвращают ложь.
Я вернусь в обоих случаях? Почему это поведение?
Вы имеете в виду, что '==' было переопределено в этом случае для сравнения целочисленных значений вместо адреса объектов? – liv2hak
Это не значит, что '==' было переопределено для сравнения значений, так что во всех случаях, когда вы создаете новый объект Integer (1), существует только 1 объект, а внутренности возвращают эту ссылку Object, а не создают новый. –
@ liv2hak Нет совсем не понятие '=='. Это концепция кэширования и улучшения языковой производительности. –