问题:在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);//按位与