&与&&的区别和联系

1、相同点

&和&&都是逻辑与的运算符,当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

2、不同点

(1)&&与&的不同点:

如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算;但是,&即使在左边为false的情况下依旧会对右边的式子做出计算。

(2)&&的运用:

很多时候我们可能都需要用&&而不是&,例如:在验证用户登录时判定用户名不是null而且不是空字符串:

username != null &&!username.equals(" ");

左边判断数据库中是否有该用户名(用户不存在),左边则判断用户的用户名是否为空字符串(用户存在,但是用户名为空字符串)。

二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。

(3)&的运用:位运算符

当&操作符两边的表达式不是布尔类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x34 & 0x0f的结果为0x04(需要将十六进制转换为二进制,然后逐位进行与运算即可)

猜你喜欢

转载自www.cnblogs.com/zhai1997/p/12520373.html