2013-06-01 3 views
-4

С следующим:распределения памяти/ссылка сравнение для целых чисел и Целых

String a = new String("test"); 
String b = "test"; 
System.out.println(a == b); //false 

Мы получаем ложные, так как String a является объектом, поэтому a указует на другое место в памяти, чем строковый литерал, b. Я хотел посмотреть, как это работает для int и Integer:

Integer x = new Integer(5); 
int y =5; 
System.out.println(x == y); //true 

я хоть что x.equals(y) было бы верно, но x == y было бы ложным, как в случае с Strings. Я понимаю, что мы сравниваем ints с ==, но я решил, что сравнение int с Integer будет отличаться. Почему это не так?

Я предполагаю, что в этом случае использование == не будет работать для сравнения ссылок, так как мы это сделаем (не уверен, что это практично, но я хотел бы знать)?

ответ

3

Из бокса и распаковка в Java

Преобразование Int к Integer, двойной к двойному, и так далее. Если преобразование идет в другую сторону, это называется распаковкой.

Autoboxing/распаковка является чисто удобная функция, которая позволяет присваивать значения примитивного типа ссылки из класса обертки, и наоборот, с компилятором автоматически добавлять код для преобразования между ними.

Boxing and unBoxing и SEE HERE ALSO

Смежные вопросы