&和&&的区别(简单易懂)

&(按位与)和&&(逻辑与)的区别如下:

1.&&具有短路功能,而&不具有短路功能。
2.
当&运算符两侧的表达式的结果均为真时,整个运算结果才为真。
当&&操作符第一个表达式为 false时,结果为 false,并且不再计算第二个表达式。

(简单的表达就是:使用&运算符,必须两侧的都是true,结果为真。使用&&运算符,重点看第一个表达式,第一个表达式为false,后面的表达式就不会再计算(因为具有短路功能),如果第一个表达式是true,后面就会继续进行计算,直到后面全部都为true,才为真。)

为了让大家更好的理解,请看下面代码:
这里引入一下变量的命名规范!!!
变量的名字可大小写混用但首字符应小写。词由大写字母分隔,限制用下划线,限制使用美元符($),因为这个字符对内部类有特殊的含义。示例如:resultOne 。

        boolean resultOne = 1==3 & 1==1 & 2==2; //使用 &
        boolean resultTwo = 1==3 && 1==1 && 2==2; //使用 &&
        System.out.println(resultOne); //resultOne = false
        System.out.println(resultTwo); //resultTwo = false
        //当使用 & 时,要进行  1==3 & 1==1 & 2==2 的判断
        //当使用 && 时,因为 1==3 为 false,所以进行了短路的操作,后面的1==1 && 2==2 不用执行。

在很多时候我们都用到&&而不用&,例如在验证用户登录时进行时进行的判断,用户名不为空(null)也不是空字符串,代码应该写成:

userName != null && !userName.equals("");
//这里不能使用 & 运算符,顺序也不能交换,如果用户名真的为空的情况下,会报空指针异常(NullPointerException)。

userName.equals("") 如果userName为null 进行equals操作会报NullPointerException,所以我们要先判断userName不为null,在用equals判断不是空字符串。

  • 60
    点赞
  • 203
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雄有哆啦梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值