В следующем коде у меня две идентичные операции условного присваивания, один возвращает объект типа Double, а второй возвращает строку "Integer".
double d = 24.0;
Number o = (d % 1 == 0) ? new Double(d).intValue() : new Double(d).doubleValue();
String result = (d % 1 == 0) ? "Integer" : "Double";
System.out.println(o.getClass()); // prints "class java.lang.Double"
System.out.println(result); // Integer
Почему одни и те же выражения возвращают две разные вещи?