2016-11-20 3 views
1

Wenn x und y int Variablen sind. Sind die folgenden zwei Java-Code-Abschnitte für alle Werte von x und y verhaltensgleich? Erkläre warum oder warum nicht.Sind && Statements und verschachtelte Conditionals des folgenden Codes äquivalent?

Version 1:

if (x > 10) 
    { 
    if (y < 20) 
    {System.out.print("hi"); 
    } 
} 

Version 2:

if (x > 10 && y < 20) 
{ 
System.out.print("hi"); 
} 

Ich denke, es entspricht aber ich möchte nur sicherstellen, dass ich fehle nichts. Ich sehe nicht, wie sie nicht gleichwertig sein können. Vielen Dank.

+0

hier wird das Ergebnis tatsächlich das gleiche sein. – davidxxx

+0

ja, aber wenn es viele verschachtelte ifs gibt, dann ist 1st schön –

+0

'&&' ist keine * Anweisung *, es ist ein * Operator *. – Andreas

Antwort

1

Ja, sie sind völlig gleichwertig. In Situationen wie diesen kommt es darauf an, denjenigen auszuwählen, den Sie für den klarsten halten.

1

Ja, das sind sie.

Der wichtige Punkt, der vielleicht nicht so offensichtlich ist, ist, dass in beiden Versionen der zweite Vergleich nur dann ausgewertet wird, wenn der erste zu 'wahr' führt.

+0

Schöner Punkt auf Kurzschlüssen. Viele Leute werden das wahrscheinlich verpassen. – Zizouz212

0

Ja, sie sind auch aus der semantischen Sicht äquivalent.

1

Ja, sie sind äquivalent, aber die zweite ist kürzer, und Sie können eine einzige else Klausel hinzufügen, die Sie nicht in der ersten tun können, weil Sie zwei unabhängige else Klauseln dort schreiben müssten.

Ob eine oder zwei else Klauseln verwendet werden sollten, hängt davon ab, was Ihre Logik erfordert, daher können beide Formulare geeignet sein.

Ich würde allgemein empfehlen die zweiten, aber wenn Sie nicht eine einzige else Klausel benötigen, und die Ausdrücke sind groß, die erste kann seine lesbaren enden.

Verwandte Themen