0
点赞
收藏
分享

微信扫一扫

常见Java面试题之&和&&的区别?


&和&&区别分析

&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是​短路与运算​。​逻辑与​跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:​逻辑或运算符(|)​和​短路或运算符(||)​的差别也是如此。


本题涉及java知识点分析

逻辑与运算符&

&,双目运算符:将两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上。

比如170&204

对应二进制就是

10101010B & 11001100B =10001000B…

170&204=136…

该位只要有一个值为0结果为0,否则结果为1。

如果两数位数不同,则较短数高位补零,再运算,比如char a=100;int b=260;

短路与运算符&&

&&:双目运算符,计算两个表达式同时成立的“真值”(同时成立真值为真否则为假)

逻辑真值有两种,1为真,0为假,但在运算时用非零表示真,0表示假。

即:数值->逻辑真值--非0为真,0为假/逻辑真值->数值--真为1,假为0。

例如:char a=1,b=0,c=-1;那么a真b假c真。a&&b和c&&b为假值为0,a&&c为真值为1

希望对大家有所帮助。


举报

相关推荐

0 条评论