Salve, mi sono imbattuto in questo codice che mi ha fatto sorgere qualche dubbio...
codice:
public class TestClass {
	public static void main(String args[ ]) {
		int i = 0;
		boolean bool1 = true;
		boolean bool2 = false;
		boolean bool  = false;
		bool = (bool2 &  method1("1")); //1
		bool = (bool2 && method1("2")); //2
		bool = (bool1 |  method1("3")); //3
		bool = (bool1 || method1("4")); //4
	}
	public static boolean method1(String str) {
		System.out.println(str);
		return true;
	}
}
Eseguendolo stampa 1 e 3...
method1() restituisce sempre true, mentre bool vale, in sequenza, false false true true: non c'è quindi corrispondenza tra l'esito del confronto logico e l'esecuzione di method1().

Come mai l'operatore bitwise (& e |) fa stampare sempre e quello logico (&& e ||) mai?