||:逻辑短路,前面表达式为真,后面就不运算了
&&:逻辑短路,前面表达式为假,后面就不运算了
|、&也可以连接多个条件,但没有逻辑短路功能
例如:
true || (10 / 0 == 0); //true,不会报错,因为前面为true,所以不会计算后面
true || (10 / 0 == 0); //报错,尽管前面已经为true,仍然会计算后面的表达式
false && (10 / 0 == 0); //false,不会报错,因为前面为false,所以不会计算后面
false & (10 / 0 == 0); //报错,尽管前面已经为false,仍然会计算后面的表达式
注意:当|或&左右两边都为整数型还能当作位运算符
System.out.println(10 | 1); //11 1010 或运算
0001
1010
System.out.println(10 & 1); //0 1010 与运算
0001
0000
System.out.println(10 & true); //报错
只有当左右两边都为整数时才能当作位运算,如果一边boolean类型一边整数型就会报错