在Java中,& 和 && 都是逻辑与操作符,但有一些区别。
- & 是按位与操作符,用于对两个操作数的每个对应的位执行位与操作。它不会短路求值,即使第一个操作数为 false,也会对第二个操作数进行计算。
- && 是短路逻辑与操作符,用于对两个操作数进行逻辑与操作。它会进行短路求值,如果第一个操作数为 false,就不会对第二个操作数进行计算。
下面是一个示例,演示了两者之间的区别:
int a = 5;
int b = 10;
if (a > 0 & b++ < 20) {
// 该条件为 true,b 的值会增加
System.out.println("Both conditions are true");
}
System.out.println(b); // 输出结果为 11
int c = 5;
int d = 10;
if (c > 0 && d++ < 20) {
// 该条件为 true,d 的值会增加
System.out.println("Both conditions are true");
}
System.out.println(d); // 输出结果为 10
在上面的示例中,使用 & 操作符时,无论第一个操作数是否为 false,都会对第二个操作数进行计算,因此 b 的值增加了。而在使用 && 操作符时,如果第一个操作数为 false,就不会对第二个操作数进行计算,因此 d 的值没有增加。