&和&&的区别【讲解+代码演示】

问题:在Java中,&和&&的区别?

  首先,&是叫逻辑与/按位与,&&是叫短路与,先通过一个例子讲下他们两者的区别,看下面两段代码。使用&的情况下遇到false &还会往后执行,++a>10结果为true,a=11。使用&&的情况下遇到false &&不再往后继续运行(短路),++a>10这个表达式程序并未执行,所以a=10。

int a = 10;
System.out.println(false & ++a>10);//false 
System.out.println(a);//11
int a = 10;
System.out.println(false && ++a>10);//false 
System.out.println(a);//10

总结:程序发生短路的情况,遇到false &&和true ||,其实也不难理解,因为不管是false && false还是false && true它最终的结果都是false,true ||同理,所以&&和||只是程序优化手段罢了。

最后我们再来说下&什么时候是逻辑与,什么时候是按位与。

System.out.println(true & false);//逻辑与
System.out.println(5 & 3);//按位与

猜你喜欢

转载自blog.csdn.net/qq_41250372/article/details/125001168