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:

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));
}
Ciao.

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......