先说如何区别:为运算符用来对操作数的二进制形式进行运算用的,而逻辑运算符是用来处理布尔类型的值的,也就是说编译器是根据运算符两边的运算数的类型来进行判断的,或者这样说编译器首先判断的不是运算符的类型而是先判断运算数是否能转换为一个相应的二进制数,因为位运算最终处理的是二进制数间的运算,而对于处理逻辑运算的操作来说,它也不是先判断运算符的类型,而是先判断两边的操作数是否是布尔类型的式子,也就是说是否可以判断真假。
再有的就是书上讲到的&与&&在两种运算符里的区别,首先要明确的是在位运算符只存在&这种运算符,而在逻辑运算里就跟你书上写到的他两种大体上都可以说是一样的(都是只有当两边都为真的时候才返回真),但不同的是它的处理流程,&它处理起来非简洁,而&&处理起来是简洁的,那一个例子来说:public class DC{
public static void main(String[] args){
int a=122,b=23;
System.out.println(a<1&b>2);
System.out.println(a<1&&b>2);
}
}
为什么说&是非简洁,因为他在处理的时候两边都会判断,即使明知前面是假的他仍会继续判断后面,最后才打印结果,而&&先判断前面,若前面是真的它就会继续判断后边的那个表达式的真假,若前面是假的话,无论后边的值是真是假它也不再判断,而是直接打印你出结果。
位是&和|
逻辑是&&和||
是这样的,你的书没错啊
java中可不是说像C++一样可以给boolean值赋1、 0,只能是true false。
所以如果两边是数字就位算
两边是boolean就逻辑了
个人理解,不过我觉得肯定是这样的