逻辑运算符与位运算符

本文详细介绍了Java中的逻辑运算符与位运算符的区别和用法。逻辑与(&&)、逻辑或(||)、逻辑非(!)在短路运算中的行为,并通过示例展示了它们如何影响代码执行。同时,位运算符(&、|、^、~)的使用也在文中得到阐述,包括左移(<<)和右移(>>)操作的效率和应用场景。
摘要由CSDN通过智能技术生成

逻辑运算符与位运算符

1.与(and)或(or)非(!-取反)

逻辑与运算:两个变量都为真,结果才为true.

逻辑非运算:两个变量中有一个为真,则结果才为true。

逻辑非运算:如果是真;则变为假;如果是假,则变为真。

        boolean a = true;
        boolean b = false;
        System.out.println(a&&b);//逻辑与运算:两个变量都为真,结果才为true.
        System.out.println(a||b);//逻辑非运算:两个变量中有一个为真,则结果才为true。
        System.out.println(!(a&&b));//逻辑非运算:如果是真;则变为假;如果是假,则变为真。
  • & 可以用作逻辑与的运算符,表示逻辑与(and)

    • 当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

    • 无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断

  • && 可以用作逻辑与的运算符,表示逻辑与(and)

    • 当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

    • 第一个条件不成立,后面的条件均不进行判断,返回false

  • | 可以作逻辑或运算符,表示逻辑或(or)

    • 当运算符有一边为true时,整个运算结果为true

    • 无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断

  • || 可以作逻辑或运算符,表示逻辑或(or)

    • 当运算符有一边为true时,整个运算结果为true

    • 第一个条件成立,后面的条件均不进行判断,返回true

此段转载自java 且_JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法_weixin_39542514的博客-CSDN博客

2. 短路运算

            boolean a = true;
        boolean b = false;
        System.out.println(a&&b);
        System.out.println(a||b);
        System.out.println(!(a&&b));
​
        //短路运算
        int c = 100;
        boolean d =(99>c)&&(99>c++); //进行短路运算,后面(99>c++)未执行
        System.out.println(d); //未执行,d为false
        System.out.println(c);  //未执行c++,a为原赋值100
        boolean f =(99>c)&(99>c++);
        System.out.println(f);  //此时d为
        System.out.println(c); //此时c的值为101
        boolean g =(99>c)&&(99>c++);//短路运算进行,前面(99>c)错误,后面未执行c++,所以c的值不变。c=101 。
        System.out.println(g);//false
        System.out.println(c);//101
        boolean h =(99>c++)&&(99>c);
        System.out.println(h);
        System.out.println(c)
        boolean h =(99>c++)&&(99>c);
        System.out.println(h);  //boolean判断 false
        System.out.println(c);  //c的值为102,证明即使使用短路运算符,如果计算机识别到,任然会执行c++, 但是不执行后面的。
​

3.位运算符

位运算符:&,|,^,~。

A = 0011 1100
B = 0000 1101
​
A&B =0000 1100
A|B =0011 1101
A^B =0011 0001
~B =1111 0010

A = 0011 1100 B = 0000 1101 位运算符:&,|,^,~。

A&B:对应位,如果两个都为1,才为1,否则为0。 0000 1100 A|B:对应位,如果两个都为0,才为0,否则为1。 0011 1101 A^B:如果对应位相同则为0,不同为1。 ~B:每位取反。1111 0010

5.左移右移<<,>>

2*8  2*2*2*2
效率极高
<<  *2
>>  /2
二进制移位
  1  0000 0001 左移后
  2  0000 0010 继续左移
  4  0000 0100 继续左移
  8  0000 1000  
  System.out.println(2<<3); // 16
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值