&&和&都可以用作逻辑与的运算符,使用方法和表达结果是相同的,只有两边的表达式的结果都为true,则结果才为true,但如果有一边的表达式为false,则结果必为false,例如:
boolean a = 1 > 0 && 2 > 0;
boolean b = 1 > 0 & 2 > 0;
System.out.println(a);
System.out.println(b);
输出的结果为:
true
true
但&&和&的判断过程却是不一样的,因为在使用运算符&&时,当判断出前面的表达式的结果为false时,会直接得出结果,后面的表达式将不会执行,这样操作可以大概率避免出现NullPointerException异常导致的程序奔溃。而在使用运算符&时,不管一边表达式结果如何,都会将两边的表达完整执行后再进行判断。
&也可以用作位运算符,当操作符&两边表达式不是boolean类型时,&表示按位与操作。
小技巧:如果对逻辑与和逻辑或的运算结果分析不是了解的话,可以将逻辑与想象为串联电路,逻辑或想象成并联电路,两边的表达式想象成为电路上的开关,表达式结果为true时,则表示开关断开;表达式结果为false时,则表示开关闭合。如果电路能正常通电,则表示最终结果为true,否则就为false。