Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Проблемы с автобоксингом |
Автор: Се ля ви 7.2.2013, 10:51 | ||||
WTF? Зато, если выходим за диапазон типа "byte":
По крайней мере в последней, 7-й Java такая штука наблюдается (в более ранних не тестировал). Кто-нибудь может объяснить - почему такое происходит? |
Автор: danilych 7.2.2013, 11:14 |
Происходит так потому, что числа до 128 типа Integer java машина кеширует. Этот параметр можно и увеличить (вроде как вот этот флаг XX:+EliminateAutoBox). Т.е. если вы в коде задаете числа типа Integer до 128, то объекты класса Integer не создаются, а берутся из кэша JVM, соответственно и переменные ссылаются на одну и ту же область памяти. Если в кэше нет нужного объекта, то он создается (в вашем случае один для y, а другой для x) |
Автор: Kircul 7.2.2013, 12:10 |
Autoboxing это посути ничто иное как вызов метода http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#valueOf(int). Заглянуть в исходный кода думаю проблемы не составит ;) |