Код: Выделить всё
? :
Код: Выделить всё
System.out.println(false ? 1.0 : 2);
Это поднимает пару вопросов:
- Почему тернарный оператор Java вообще выполняет преобразование типов?
- Оператор, похоже, следует типичной иерархии продвижения типов Java (например, byte -> short -> int -> long -> float). Однако когда используется int, он всегда возвращает другой тип, если int попадает в диапазон этого типа. Например, в приведенном ниже коде результатом является байт со значением 1:
Код: Выделить всё
System.out.println(true ? (int) 1 : (byte) 2);
Я не проверял все возможные комбинации типов с тернарным оператором, но иногда поведение приведения типов кажется непоследовательным или произвольным.
Как Java решает, какой тип возвращать в этих случаях?
Подробнее здесь: https://stackoverflow.com/questions/791 ... pe-casting