&和&&的区别?

mac2026-02-14  13

&和&&的区别?

& 称为按位与,是对计算机位的操作,属于计算机二进制位运算范畴。

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

相似点:&(按位与)和&&(逻辑与)的执行结果一致。

不同点:&(按位与)当第一个条件不满足时,第二个条件也会进行运算判断,而&&(逻辑与)当第一个条件不满足时,第二个条件将不会被执行,直接被短路掉。

程序示例:

public class LogicTest { public static void main(String[] args) { System.out.println(12&24); // 输出8 boolean a=true; boolean b=false; System.out.println(a&b); // 输出false System.out.println(a&&b); // 输出false } }

 

最新回复(0)