Здравствуйте, Pavel Dvorkin, Вы писали:
vsb>>Это не так. Это эквивалентно Boolean b = Boolean.valueOf(false);
PD>М-да. Сэкономить решили. Ну, в общем, правильно. Я просто полагал, что делается по аналогии с другими типами — оболочками.
С другими типами тоже valueOf() (: Причём по умолчанию тот же Integer от -128 до 127 тоже кешируется. Поэтому всякие приколы возникают вида
Здравствуйте, vsb, Вы писали:
vsb>С другими типами тоже valueOf() (: Причём по умолчанию тот же Integer от -128 до 127 тоже кешируется. Поэтому всякие приколы возникают вида
Да, сейчас посмотрел и хотел об этом упомянуть, отредактировав свое сообщение.
Здравствуйте, GarryIV, Вы писали:
GIV>Есть боксинг а есть аутобоксинг, немного разные вещи
Дело не в этом, а в реализации valueOf, как верно отметил vsb
Integer v = i;
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
приведет к вызову конструктора при !(i >= IntegerCache.low && i <= IntegerCache.high), а иначе так же, как и Boolean
Здравствуйте, Pavel Dvorkin, Вы писали:
GIV>>Есть боксинг а есть аутобоксинг, немного разные вещи
PD>Дело не в этом, а в реализации valueOf, как верно отметил vsb
PD>Integer v = i;
Здравствуйте, GarryIV, Вы писали:
F2>>Откуда следует ответ на предыдущий вопрос? Он прописан в стандарте (я его не читал еще, разбираюсь же только), или зависит от реализации? GIV>Хз, должно быть прописано. Искать влом.
Здравствуйте, StanislavK, Вы писали:
F2>>>Откуда следует ответ на предыдущий вопрос? Он прописан в стандарте (я его не читал еще, разбираюсь же только), или зависит от реализации? GIV>>Хз, должно быть прописано. Искать влом.
SK>Не, точно не прописано. Это просто оптимизация.
If the value p being boxed is the result of evaluating a constant expression (§15.29) of type boolean, byte, char, short, int, or long, and the result is true, false, a character in the range '\u0000' to '\u007f' inclusive, or an integer in the range -128 to 127 inclusive, then let a and b be the results of any two boxing conversions of p. It is always the case that a == b
GIV>If the value p being boxed is the result of evaluating a constant expression (§15.29) of type boolean, byte, char, short, int, or long, and the result is true, false, a character in the range '\u0000' to '\u007f' inclusive, or an integer in the range -128 to 127 inclusive, then let a and b be the results of any two boxing conversions of p. It is always the case that a == b
И правда, наврал я. Зря они так, я бы это максимум рекомендацией сделал, как бы детали реализации.