Java中的逻辑运算符与位运算符

    xiaoxiao2024-12-21  3

    一、Java中的运算符

    Java中的运算符分为几大类:

          算术运算符:+、-、*、/、%、++、- -

          赋值运算符:=、+=、-=、*=、/=等等

          位运算符:~、&、|、^

                     逻辑运算符:!、&&、||

          关系运算符:>、<、>=、<=、= = 、!=

          移位运算符>>、<<、>>>(无符号右移)

    对于这些运算符的不同名字与分类其实很好理解,不同种类的运算对象不同罢了。而本篇集中阐述的是Java中的逻辑运算符与位运算符。

    二、Java中的逻辑运算符

    逻辑运算符,说白了就是对布尔型数据进行运算的。因此满足如下规律:

    运算符用法含义&&

    op1&&op2

    逻辑与||

    op1||op2

    逻辑或!

    !op

    逻辑非

    运算规则:

    op1op2op1&&op2op1||op2!op1truetruetruetruefalsetruefalsefalsetruefalsefalsetruefalsetruetruefalsefalsefalsefalsetrue

    三、位运算符

    所谓位运算符,把人搞的一头雾水,“位”到底是个什么玩意儿呢?“位”既然修饰“运算符”,那么就说明“位运算符”是按位运算的,按“位”运算,前提是有“位”,这个为“位”从哪来呢?这就是位运算符的高级之处了,位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算。

    也i运算符的符号及规则:

    “按位与”运算符“&”,规则:全1则1,否则为0

    “按位或”运算符“|”,规则:全0则0,否则为1。 

    “按位非”运算符“~”,规则:遇1则0,遇0则1。

    “按位异或”运算符“^”,规则:相同为0,不同为1。  

    ps:按位异或很奇妙,使用两次则还原:

          3 ^ 5 = 6;

          6 ^ 5 = 3;

    四、位运算符与逻辑运算符的区别

    1.逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。

    2.逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。

    代码示例及运行结果:

    逻辑或:

    public class Example9{ public static void main(String [] arg){ int y = 10; int z = 10; if((y=0)==0 || (z=0)==0){ //短路 System.out.println(z); } } }

    位运算按位或:

    public class Example9{ public static void main(String [] arg){ int yy = 10; int zz = 10; if((yy=0)==0 | (zz=0)==0){ System.out.println(z); } } }

    注意比较z和zz的输出结果,会发现“逻辑或”只执行了前半条语句,也就是后半条语句被“短路”了,而“按位或”同时执行了“|”两边的语句。

    以上,就是Java中逻辑运算符与位运算符概念的具体阐述与比较。

     

     

        

     

     

     

     

     

         

    最新回复(0)