运算符&和&&的区别

&和&&在逻辑运算符中都是用于连接两个boolean表达式,两边都为true则整体为true,两边只要有一边为false则输出false,区别在于:

  1. &&具有短路功能,即当第一个boolean表达式为false时,就不往下判断第二个表达式,而&在第一个表达式为false的情况下,仍会去判断第二个表达式的真假。例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException,但如果将&&改为&,则会抛出NullPointerException异常。
  2. &还可用作位运算符,表示按位与操作,两个数进行&运算时,它们的二进制值与操作的结果只有同一bit位上的值都为1时结果才为1,否则为0,比如128&129=128,128的二进制是10000000,129的二进制是10000001,&后的结果是10000000,即128,,&操作经常用于获取一个数的高四位bit或者低四位bit,0x31 & 0x0f的结果为0x01。

这里再顺便补充下^(异或)运算符:
^在逻辑运算符中用于连接两个变量/常量,表示相同为false,不同为true,在位运算符中则是表示两个值相同为0,不同为1,例如 2和2做异或的结果为0,0和4做异或的结果为4,常用于在一串数字中找出唯一个不重复的数字,时间复杂度是O(n),假设一个数组中只有一个重复的数字,遍历所有的数字做异或操作可留下那唯一一个。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值