20.10.2015 / 18:35 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| DominaN, (pix & 0xFF000000)
__________________
let live |
21.10.2015 / 14:14 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Что за ???
Сравниваю числа. Причём до 127 всё норм, сравнивается нормально. Но с 127 начинается бред.
|
21.10.2015 / 14:30 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| Askalite, byte переполняется?
|
21.10.2015 / 15:24 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Freddy, Integer
|
21.10.2015 / 15:30 | |
Dimon638 Пользователь Сейчас: Offline
Регистрация: 12.04.2011
| Askalite, Integer'ы через equals надо сравнивать.
Изменено Dimon638 (21.10 / 15:30) (всего 1 раз) |
21.10.2015 / 16:26 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| |
21.10.2015 / 16:37 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Askalite, если коротко, то числа от -128 до 127 — закешированы и поэтому обладают одинаковыми ссылками. Именно поэтому при их сравнении через == все выходит верно. Но остальные числа хоть и обладают теми же значениями, объекты, их представляющие, имеют разные ссылки.
Правильно сравнивать два Integer необходимо через equals (либо анбокснув оба числа в примитивы).
__________________
Эль Презеденте |
22.10.2015 / 14:09 | |
Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| Помню был сборник таких задачек на хабре и там об этом говорилось. Я даже в избранное добавил.
Цитата Oak: если короткоА если подробнее?
__________________
Homo homini penis est. |
22.10.2015 / 14:36 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| В JVM есть ключ для указания размера Integer cache. -Djava.lang.Integer.IntegerCache.high=2048
__________________
let live |
22.10.2015 / 17:00 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| aNNiMON, поправлю, это системное свойство, а не ключ JVM. Да, этот ключ увеличит верхнюю границу кешируемых значений — от -127 до high (такая информация справедлива как минимум для Hotspot VM). Но на это сильно полагаться нельзя. Ссылка на документацию, цитата: This method will always cache values in the range -128 to 127, inclusive, and may cache other values outside of this range.Что значит "Значения от -128 до 127 всегда закешированы, иногда могут кешироваться и другие значения". __________________
Эль Презеденте Изменено Oak (22.10 / 17:02) (всего 1 раз) |