&和和&&在Java?

时间:2011-08-26 03:16:53

标签: java operators

  

可能重复:
  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”。如果它们都有效,那么我使用哪一个呢?

4 个答案:

答案 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...
}