Gefunden einige seltsame Dinge in Java.Seltsame Dinge in Java
Code:
System.out.println(System.getProperty("java.version"));
System.out.println((true) ? (int)2.5 : 3.5);
System.out.println((true) ? (int)2.5 : 3);
System.out.println((true) ? (int)2.5 + "" : 3.5);
Ergebnis:
1.8.0_40 2.0 2 2
Was ist das? Warum gibt der Integer-Wert nur zurück, wenn der Wert für false kein double-Wert ist oder wenn der Wert für true einem Wert hinzugefügt wurde? Warum funktioniert das Runden in der zweiten Zeile mit (int) cast, aber gibt es einen doppelten Wert? Ist es ein Fehler?
Nein, diese Dinge sind keine Fehler. – Jesper
Soweit es den Compiler betrifft, gibt es nur einen Typ für den gesamten '?:' Ausdruck, und das wird dadurch herausgefunden, dass der schmalste gemeinsame Typ zwischen beiden Seiten gefunden wird. –
(Ich gestehe, ich bin überrascht, dass die letzte Zeile kompiliert, obwohl.) –