JAVA运算符之 与

&&和&

&&和&:是双目运算符,写成(a&&b)或(a&b),且a、b结果一定是boolean类型(即true或false)。

  • &&:短路与,如果a为false不执行b部分直接输出结果
  • &:非短路与,a为false依然执行b部分

例如:

代码1:

public class Operate {

    public static void main(String[] args) {
        if((11%2==0)&&(11/0==0))
        {
            System.out.println("&&");
        }
    }

}

代码2:

public class Operate {

    public static void main(String[] args) {
        if((11%2==0)&(11/0==0))
        {
            System.out.println("&");
        }
    }

}`

上面两段代码中,代码1不会报错,代码2会报错。因为对于&&:(11%2==0)为false就不执行(11/0==0);对于&:(11%2==0)为false依然执行(11/0==0)的判断;但是除数为0是没有意义的,所以会报错。

按位与

是一个双目运算符,语法形式为a&b,将两个数转换为2进制数进行每一位的与运算。

例如:14&(-8)
步骤:

  1. 将两个数表示为二进制数(此时的二进制数是原码,因为人能直接看来的形式就是原码形式)因为这两个数默认是int类型,int类型是一个4字节的数,一个字节是8位,所以14的原码是:00000000 00000000 00000000 00000110,-8的原码是:10000000 00000000 00000000 00001000(原码第一位是符号位)
  2. 将两个数原码转换为反码,对于正数原码反码补码都一样,对于负数,反码是对原码出符号位外取反,所以-8反码:11111111 1111111111111111 11110111
  3. 将两个数转化为补码,对于负数就是反码+1,所以-8补码:11111111 11111111 11111111 11111000
  4. 对14和-8补码每一位进行与操作:
    14: 00000000 00000000 00000000 00001110
    -8: 11111111 11111111 11111111 11111000

代码:

public class Andand {

    public static void main(String[] args) {
        System.out.println(-8&14);

    }

}

结果:8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值