//1
System.out.println(2&1);
//2
int i=1;
if (2>1&i++>0){
System.out.println(i);
}
//3
System.out.println(2|1);
//4.
if (2>1|i++>2){
System.out.println(i);
}
输出结果是: 0 3 3。这三个输出分部是第一条语句块、第三条语句块以及第四条语句块打印。
从1语句块就可以看出。&两边接数字就是与运算,所以第一个结果是0
从2语句块可以看出。&两边接布尔值时,表示逻辑与。由第二个结果的3看出,语句2的i++执行了,所以&有一个特性,就是&左边表达式已经为False了,也会运算右边的表达式。
从3语句块可以看出,|两边接数字就是或运算,也就是二进制加法运算。
从语句4可以看出,|两边接布尔表达式表示逻辑或,而且,即使|左边的表达式已经为真,也会计算右边的。
而&&和||只能用于逻辑运算,也就是两边跟布尔表达式。并且,在&&的时候,&&左边为假就不算右边了。在||时,左边为真就不算右边了。