逻辑操作符
与(&&) 、或(||) 、非(!),此三个逻辑操作符的两边都必须是布尔值。不可将一个非布尔值当做布尔值在逻辑表达式中使用(C/C++可以)。
按位操作符
与 (&)、或(|)、非(~)、 异或(︿),按位操作符用来操作整数基本数据类型中的单个“比特”(bit),即二进制位。
对于布尔值,按位操作符具有与逻辑操作符相同的效果,只是它们不会中途“短路”。所谓的“短路”,就是当前面不满足条件时,后面的不会继续执行。 比如
int i =0;
if(5<4&&(6>i++)){}//①
System.out.println("i="+i);
if(5<4 & (6>i++)){}//②
System.out.println("i="+i);
if(5>4||(6>i++)){}
System.out.println("i="+i);
if(5>4 | (6>i++)){}
System.out.println("i="+i);
输出结果:
i=0
i=1
i=1
i=2
在①中 当5<4判断的结果为false时,&& 就不会再进行后面的(6>i++) 判断了。但是在②中无论是5<4判断结果是ture或者false ,他都会继续执行(6>i++) 的判断。所以在①后输出的i=0,②后i=1。