标签:异常 操作符 顺序 进制 逻辑 pointer 类型 name als
1、相同点
&和&&都是逻辑与的运算符,当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
2、不同点
(1)&&与&的不同点:
如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算;但是,&即使在左边为false的情况下依旧会对右边的式子做出计算。
(2)&&的运用:
很多时候我们可能都需要用&&而不是&,例如:在验证用户登录时判定用户名不是null而且不是空字符串:
username != null &&!username.equals(" ");
左边判断数据库中是否有该用户名(用户不存在),左边则判断用户的用户名是否为空字符串(用户存在,但是用户名为空字符串)。
二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。
(3)&的运用:位运算符
当&操作符两边的表达式不是布尔类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x34 & 0x0f的结果为0x04(需要将十六进制转换为二进制,然后逐位进行与运算即可)
标签:异常 操作符 顺序 进制 逻辑 pointer 类型 name als
原文地址:https://www.cnblogs.com/zhai1997/p/12520373.html