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);
}
W powyższym kodzie przykładowym za pomocą operatora warunkowego (? :) mogę przepisać powyższy przykład w pojedynczym wierszu. Tak więc myślę, że wynik musi być taki sam. Ale, o dziwo, wynik jak poniżej:Operator warunkowy, dziwne zachowanie
5
5.0
Czy możecie mi pomóc, żebym wskazał, dlaczego to zachowanie?
AKTUALIZACJA: Wynik będzie taki sam, z następującym kodu:
Object o2 = true ? (Object) new Integer(5) : new Double(2.0);
myślę, że to dziwne, że można dostać 'Integer' w obu przypadkach, ale tylko format po wydrukowaniu jest inna. – csmckelvey
Tak, oba o1, o2 są liczbami całkowitymi. –
Próbowałem go, wykonując instanceof, a drugim wynikiem jest false. 'O1 instanceof Integer' ma wartość true, podczas gdy' o2 instanceOf Integer' result s false. Oznacza to, że o2 nie jest liczbą całkowitą – Secondo