Привет всем, я столкнулся с интересным случаем и ищу объяснение.
В Java 1.6:
Integer a = new Integer(5);
Integer b = new Integer(5);
System.out.println(a == b);
Integer c = 5;
Integer d = 5;
System.out.println(c == d);
Я получаю:
false
true
В Eclipse я проверил в отладчике. a
и b
- это разные объекты, а c
и d
- это одни и те же объекты (но отличаются от a
и b
).
Может кто-нибудь подсказать мне, что происходит под капотом? Это волшебство JVM? Понимаете, что целое число (5) уже находится в стеке?