Originariamente inviato da manublack
Cioè con il doppio OR (||) la seconda condizione mi viene eseguita lo stesso... Come mai?
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.