为什么Java中有2个布尔类型的运算符?

时间:2012-11-26 12:47:55

标签: java boolean-operations

正如在Java中思考的那样,如果你有2个布尔对象xy,你可以使用它们x= x&&yx=x&y,那么为什么必要的呢?两种类型?

4 个答案:

答案 0 :(得分:12)

两位经营者采取不同的行动:

  • &将始终评估两个操作数
  • && 短路 - 如果第一个操作数的计算结果为false,那么整体结果将始终为false,并且不会计算第二个操作数< / LI>

有关更多详细信息,请参阅Java语言规范:

答案 1 :(得分:3)

查看此代码的输出:

    int x = 0;
    boolean b = false & (++x == 1); // b is false
    System.out.println(x); // prints 1
    x = 0;
    b = false && (++x == 1); // b is false
    System.out.println(x); // prints 0

它有所不同,因为&将始终评估两个操作数,而&&如果第一个操作数为false则不会查看第二个操作数,因为整个表达式始终为false 1}}无论第二个操作数是什么。

答案 2 :(得分:2)

  1. &将评估两个操作数
  2. 如果第一个操作数为false,
  3. &&将跳过第二个操作数的评估

答案 3 :(得分:1)

&安培;是一个按位'和'运算符,&amp;&amp;是一个布尔'和'

&安培;将始终评估左侧和右侧,&amp;&amp;如果足以评估表达式,则仅评估左侧(例如,假&amp;&amp; true:仅评估LHS,因为如果LHS为假,则整个表达式必须为假)