在JAVA中,逻辑运算符(&&、||)只能对布尔型进行运算,而位运算(&、|)除了运算布尔型,还能进行逻辑运算。除了这个区别以外,逻辑运算符还有“短路”情况,即前面的表达式即可得到最终运算结果时,后面的表达式不会被执行。
请看下面代码:
对于红色方框里的部分,(a = 0) == 0为true,逻辑或中有一个为真即成立,Java程序不会执行(b = 20)==20,所以结果为10。
对于蓝色方框里的部分,由于要进行按位或运算,所以先计算|左右两边的值,即true|true,而true在二进制逻辑中为1,由此可知true|true的二进制结果依然为1,但是二进制1在boolean类型中表示true,所以输出结果为20。