区别
&& || 是逻辑运算,支持短路运算
& | 是位运算,不支持短路运算
短路运算
当有多个表达式时,左边的表达式值可以确定结果时,就再继续运算右边的表达式的值;
举例
例1
@Test public void testMyCase(){ int i= 0; if (1 == 2 && (i++) == 9) { System.out.println("1 != 2, i:" + i); } else { System.out.println("i:" + i); } }
结果
i:0
例2
@Test public void testMyCase(){ int i= 0; if (1 == 2 & (i++) == 9) { System.out.println("1 != 2, i:" + i); } else { System.out.println("i:" + i); } }
结果
i:1
分析
例1 是 &&运算,1==2为错,直接执行else语句,而例2 是位操作,需要左右数值都算出来。