If-Abfrage mit mehreren Bedingungen

MiMi

Erfahrenes Mitglied
Hi,

und zwar wollte ich mal wissen wie Java es handhabt wenn 2 Bedingungen in einer If-Abfrage verhanden sind.
Also zb
Java:
if ( a==0 && b ==1 )
{
   eineMethode();
}
Wird dann nach der ersten Bedingung, falls diese 'false' ist, direkt die if abgebrochen, oder prueft er die zweite Bedigung auch noch? Bei einem || muss er ja Beide testen.

Waere interessant zu wissen.
Ich frag hier, da ich nicht genau weiss wonach ich googeln soll :D
 
Ähm... andersrum... Bei && (logisches UND) müssen beide Bedingungen geprüft werden. Bei || (logisches ODER) muss nur eine der Bedingungen true ergeben. Ergibt die erste Bedingung true, wird die zweite nicht geprüft, ergibt sie aber false, dann wird die zweite Bedingung auch noch geprüft.
 
Ähm... andersrum... Bei && (logisches UND) müssen beide Bedingungen geprüft werden. Bei || (logisches ODER) muss nur eine der Bedingungen true ergeben. Ergibt die erste Bedingung true, wird die zweite nicht geprüft, ergibt sie aber false, dann wird die zweite Bedingung auch noch geprüft.

Wieso MÜSSEN bei einem UND beide Bedingungen geprüft werden? Wenn die erste Bedingung false zurück gibt, ist es doch unrelevant, was in den nachfolgenden Bedingungen ermittelt wird.
 
Wieso MÜSSEN bei einem UND beide Bedingungen geprüft werden? Wenn die erste Bedingung false zurück gibt, ist es doch unrelevant, was in den nachfolgenden Bedingungen ermittelt wird.

Gibt wohl diese Antwort:

Ergibt die erste Bedingung true, wird die zweite nicht geprüft, ergibt sie aber false, dann wird die zweite Bedingung auch noch geprüft.

Also ergibt die erste false, wird die Zweite net mehr getestet? Ist das nur eine Idee oder seid ihr da sicher?
Waere naemlich gut zu wissen, da bei mir die zweite Bedinung eine Methode aufruft die ziemlich 'schwer' ist und die natuerlich nur aufgerufen werden soll wenn es auch wirklich noetig ist.
 
Moin,

ob die zweite Bedingung noch geprüft wird, wenn die erste FALSE ergibt ist letztlich egal (hängt vermutlich vom Compiler ab, inwieweit der optimiert)!

Nur eins ist sicher: ist Dein 'a' != 0, dann wird "eineMethode" NIE aufgerufen!

Gruß
Klaus
 
Gibt wohl diese Antwort:



Also ergibt die erste false, wird die Zweite net mehr getestet? Ist das nur ne Idee oder seid ihr da sicher?
Waere naemlich gut zu wissen, da bei mir die zweite Bedinung ne Methode aufruft die ziemlich 'schwer' ist und die natuerlich nur aufgerufen werden soll wenn es auch wirklich noetig ist.

Folgender Coder erzeugt diese Ausgabe:
Code:
Ausgabe:
false

Java:
public class IfTest {

	public IfTest() {

		System.out.println(retFalse() && retTrue());
	}

	public static void main(String[] args) {

		IfTest test = new IfTest();

	}
	
	public boolean retFalse() {
		
		return(false);
		
	}
	
	public boolean retTrue() {
		
		System.out.println("test");
		
		return(true);
		
	}

}

Bei ODER ist es klar:
Es wird solange geprüft, bis die erste Bedingung true ergibt, die restlichen Prüfungen werden nicht mehr durchgeführt.
 
Zuletzt bearbeitet:
Mir ist klar das false und true, false ergibt :D
Es ging mir nur darum ob die zweite Bedigung geprueft wirdt, wenn die erste false ergibt.
 
Ist nur ne Vermutung ABER wenn bei der "Und Bedingung" bei der ersten Überprüfung schon nen false bekommt dann wäre JAVA schon recht dumm wenn er trotzdem nochmal die zweite Prüfung durchführt!

Ich geh also schwer von aus dass wie beim "ODER" nur solange geprüft wird wie ein true als Ergebnis noch möglich ist.
 
Hm, japp nehm ich auch an, wollte es aber mal genau wissen. Da ich mal mit wem gelabert hatte, da hatten wir es auch darueber und es gab eine Sprache die auf jeden Fall beide Bedingungen geprueft hatte, auch wenn die erste schon false ergab.
 
Zurück