public static void main(String[] args) {
Object o1;
if (true)
o1 = new Integer(5);
else
o1 = new Double(2.0);
Object o2 = true ? new Integer(5) : new Double(2.0);
System.out.println(o1);
System.out.println(o2);
}
В приведенном выше примере кода, используя условный оператор (?:), я могу переписать приведенный выше пример в одной строке. Итак, я думаю, результат o1 и o2 должен быть одинаковым. Но, как ни странно, результат:
5
5.0
Не могли бы вы, ребята, помочь мне указать, почему это поведение?
ОБНОВЛЕНО: Результат будет таким же, как в следующем коде:
Object o2 = true ? (Object) new Integer(5) : new Double(2.0);