java &与&&的区别及实例
java&与&&的区别:&既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布尔表达式。
我想很多人在学习java的时候,或者面试时都会遇到
&和&&
然而,如果你没有真正的理解他们的意思,这会给你思路上面带来很大的麻烦
在这篇blog中,当你看完了以后,你会发现,很容易就把他们给区分开了
下面是我的demo
/**
*
*/
packagecom.b510.test;
/**
*@authorJoneHongten
*@createdate:2013-11-2
*@version1.0
*/
publicclassTest{
publicstaticvoidmain(String[]args){
Stringstr=null;
if(str!=null&&!"".equals(str)){
//dosomething
}
if(str!=null&!"".equals(str)){
//dosomething
}
}
}
我们现在可能有一些模糊不清,现在我们先看看&和&&的电路问题:
对于:&&
if(str!=null&&!"".equals(str))
当:str!=null的时候,接下来才会去执行:!"".equals(str)
如果:str!=null为false,那么这个时候,程序是处于短路的情况,则,!"".equals(str)是不会执行的。
但是对于:&
if(str!=null&!"".equals(str))
不管:str!=null的结果如何(即true,false),程序都会执行:!"".equal(str)
电路问题总结:
对于:& --> 不管怎样,都会执行"&"符号左右两边的程序
对于:&&--> 只有当符号"&&"左边程序为真(true)后,才会执行符号"&&"右边的程序。
下面来说说运算规则:
对于:& --> 只要左右两边有一个为false,则为false;只有全部都为true的时候,结果为true
对于:&&-->只要符号左边为false,则结果为false;当左边为true,同时右边也为true,则结果为true
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!