2017-10-15 4 views
0

Gibt es einen spürbaren Unterschied zwischenBoolesche Variable auf Bedingung setzen?

boolean foo= bar>1; 

und

boolean foo = bar>1? true:false; 

habe ich bemerkt, dass in dem ersten Beispiel die Bedingung sofort ausgewertet wird, so etwas wie diese suchen.

int bar=3; 
boolean foo= bar>1; 
bar =0; 
if(foo){ 
    System.out.println("Foobar"); 
} 

Würde Foobar drucken, während, wenn die Bedingung in der if Aussage sein sollte, ist es überhaupt nicht drucken. Die bisher ist identisch der Boolesche Variable, die einen Wahr/Falsch-Wert von Anfang an mit dem ternären Operator zu geben oder if/else

Antwort

3

Die ternären ist hoch überflüssig. Da die Ungleichung ein boolesches Ergebnis liefert, müssen Sie keinerlei ternäre Operation ausführen.

+0

Das ist, was ich dachte, weil ich wusste, dass es nicht die Variable in der If-Anweisung auswertete, ich war nur dafür sorgen, dass es keine zusätzliche Nuance zu ihm war. – Ben

1

Eine Sache, die ich gerne hinzufügen, beide Code wird erzeugen den gleichen Bytecode. Zum Beweis können Sie die Java-Klassendatei Disassembler verwenden (javap)

den Befehl verwenden, um die Dateien classjavap -c com.package.MyClass zu zerlegen, und Sie werden für die beiden des Codes JVM generiert die gleiche Bytecode finden. Daher gibt es Nr. Nutzen oder Schaden für jede der beiden Aussagen. Aber definitiv ternär ist hier redaendant