Originariamente inviato da LeleFT
Perchè, come detto, la valutazione si ferma non appena il risultato può essere già garantito. Se il primo termine è false non posso sapere se più avanti ne troverò uno a true. Al contrario, se il primo è già true, non serve che vada avanti a valutare tutti gli altri. O meglio... si ferma al primo true che incontra. Prova questo esempio:
Ciao.codice:private static boolean valuta(int i, boolean valore) { System.out.println("Valuto " + i + ": " + valore); return valore; } public static void main(String[] args) { System.out.println("Short-circuit OR ( || ): "); System.out.println(valuta(0, false) || valuta(1, true) || valuta(2, false) || valuta(3, false)); System.out.println("\n\n"); System.out.println("Bitwise OR ( | ): "); System.out.println(valuta(0, false) | valuta(1, true) | valuta(2, false) | valuta(3, false)); }![]()
Provato.....
Il risultato dell'esempio che mi hai dato è:
Short-circuit OR ( || ):
Valuto 0: false
Valuto 1: true
true
Bitwise OR ( | ):
Valuto 0: false
Valuto 1: true
Valuto 2: false
Valuto 3: false
true
Alla Fine nel Short-circuit è stato eseguito anche la seconda condizione anche se nel primo caso è false......