Оператор имеет приоритет побитового и (&&) выше, чем побитовый или (||).См. http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
Это означает, что оба логических выражения равны, так как часть A && B && C второго логического выражения вычисляется первой, а затем объединяется с! A, как вы можете видеть в следующей таблице, гдеF1 - ваше первое выражение, а F2 - ваше второе
A B C F1 F2
0 0 0 1 1
0 0 1 1 1
0 1 0 1 1
0 1 1 1 1
1 0 0 0 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
Ниже приведен также код Java для проверки этого
public class TestLogic {
public static void main(String[] args) {
for (int i=0;i<8;i++) {
boolean a=bit(i,3);
boolean b=bit(i,2);
boolean c=bit(i,1);
System.out.println(asZeroOne(a)+asZeroOne(b)+asZeroOne(c)+"\t"+asZeroOne(f1(a,b,c))+"\t"+asZeroOne(f2(a,b,c)));
}
}
static boolean f1(boolean a, boolean b, boolean c) {
return !a || (a && b && c);
}
static boolean f2(boolean a, boolean b, boolean c) {
return !a || a && b && c;
}
static boolean bit(int value, int bitnumber) {
int bitmask = (int) Math.pow(2, bitnumber-1);
return (value & bitmask)>0;
}
static String asZeroOne(boolean b) {
return (b?"1":"0");
}
}