可能重复:
What's the difference between | and || in Java?
Difference in & and &&
我只是想知道& 和&& 之间的区别是什么?
几天后,我写了if
语句的条件,如下所示:
if(x < 50 && x > 0)
但是,我将&amp;&amp; 更改为&amp; ,并且没有显示任何错误。有什么区别?
示例:我编译了这个简单的程序:
package anddifferences;
public class Main {
public static void main(String[] args) {
int x = 25;
if(x < 50 && x > 0) {
System.out.println("OK");
}
if(x < 50 & x > 0) {
System.out.println("Yup");
}
}
}
打印“OK”和“Yup”。如果它们都有效,那么我使用哪一个呢?
答案 0 :(得分:355)
&
是按位的。
&&
是合乎逻辑的。
&
评估操作的双方
&&
评估操作的左侧,如果它是true
,它会继续并评估右侧。
答案 1 :(得分:68)
&安培;是按位AND运算符,比较每个操作数的位。
例如,
int a = 4;
int b = 7;
System.out.println(a & b); // prints 4
//meaning in an 32 bit system
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000111
// ===================================
// 00000000 00000000 00000000 00000100
&安培;&安培;是逻辑AND运算符仅比较操作数的布尔值。它需要两个表示布尔值的操作数,并对它们进行惰性求值。
答案 2 :(得分:42)
&安培;&安培; ==逻辑AND
&安培; =按位AND
答案 3 :(得分:32)
'&安培;'执行两项测试,而'&amp;&amp;'如果第一个测试也是如此,则仅执行第二次测试。这被称为短路,可以视为优化。这在防止nullness(NullPointerException)时特别有用。
if( x != null && x.equals("*BINGO*") {
then do something with x...
}