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);
}
Nel codice di esempio sopra, utilizzando l'operatore condizionale (? :) Posso riscrivere l'esempio precedente in una singola riga. Quindi, penso che il risultato di o1 & o2 debba essere lo stesso. Ma, stranamente, il risultato come di seguito:Operatore condizionale, comportamento strano
5
5.0
Potrebbe voi prego, aiutami a sottolineare perché è questo comportamento?
AGGIORNAMENTO: Il risultato sarà lo stesso con il seguente codice:
Object o2 = true ? (Object) new Integer(5) : new Double(2.0);
penso che sia strano che si ottiene 'Integer' in entrambi i casi, ma solo quando il formato stampato è diverso. – csmckelvey
Sì, entrambi o1, o2 sono numeri interi. –
L'ho provato facendo instanceof e il secondo risultato è falso .. 'o1 instanceof Integer' risulta vero mentre' o2 instanceOf Integer 'risulta s falso .. quindi significa che o2 non è un numero intero – Secondo