Java中&与&&的区别

有时候会疏忽这些小的细节,今年在面试和笔试的时候都有考到类似的题目,就是关于&和&&的

Java中不管&&还是&都是作为一个逻辑与,但是&&有一个短路的机制一旦左边是false右边就不会去做判断(这从理论上来说他的效率应该是更高的),但是&不是不管判断条件第一个是不是false它都会去执行下面的判断.但是两者最终的效果都是一样的.

一个小的例子:

public static void main(String[] args) {
//关于&与&&的区别
String test="test";
if(test==null&&100/0==100)
{
System.out.println("test");
}

}

上面的小例子中&&右边的一个判断条件存在错误,但是你在执行的时候,并不会报错,这就是因为&&左边的条件是false一旦一个是false它是不会继续执行下面的判断的.这就是相当于短路的感觉.

public static void main(String[] args) {

//关于&与&&的区别
String test="test";
if(test==null&100/0==100)
{
System.out.println("test");

}

}

如果是&就会出现错误.这就是因为&会把判断条件执行完.


常见的&还有与运算

int a=1;
int b=3;
System.out.println(a&b);

这就是上面的a与b都转化为二进制,最后两者都为1的才会1,最后的结果很显然就是1.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值