Java 布尔运算符

Java教程 - Java布尔运算符


布尔逻辑运算符操作布尔操作数。

逻辑运算符列表

下表列出了所有Java布尔逻辑运算符。

运算符 结果
& 逻辑AND
| 逻辑或
^ 逻辑异或(异或)
|| 短路OR
&& 短路AND
! 逻辑一元NOT
&= AND分配
|= OR分配
^= XOR分配
== 等于
!= 不等于
? : 三元if-then-else

True table

下表显示了每个逻辑操作的效果:

A B A | B A& B A ^ B !A
False False False False False True
True False True False True False
False True True False True True
True True True True False False

以下程序演示了布尔逻辑运算符。

 
public class Main {
  public static void main(String args[]) {
    boolean a = true;
    boolean b = false;
    boolean c = a | b;
    boolean d = a & b;
    boolean e = a ^ b;
    boolean f = (!a & b) | (a & !b);
    boolean g = !a;
    System.out.println(" a = " + a);
    System.out.println(" b = " + b);
    System.out.println(" a|b = " + c);
    System.out.println(" a&b = " + d);
    System.out.println(" a^b = " + e);
    System.out.println("!a&b|a&!b = " + f);
    System.out.println(" !a = " + g);

  }
}
]]>

输出:

例子

以下程序演示了按位逻辑运算符:

 
public class Main {
  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = a | b;
    int d = a & b;
    int e = a ^ b;
    int f = (~a & b) | (a & ~b);
    int g = ~a & 0x0f;

    System.out.println(" a = " + a);
    System.out.println(" b = " + b);
    System.out.println(" a|b = " + c);
    System.out.println(" a&b = " + d);
    System.out.println(" a^b = " + e);
    System.out.println("~a&b|a&~b = " + f);
    System.out.println(" ~a = " + g);

  }
}

这里是这个程序的输出:

Java逻辑运算符快捷方式

当一个操作数为 true 时, OR 运算符为真,无论第二个操作数是什么。当一个操作数为 false 时, AND 运算符将导致false,操作数是。如果使用 || && ,Java将不会评估右侧操作数结果可以由左操作数单独确定。

下面的代码显示了如何使用短路逻辑运算符确保除法运算在评估之前有效:

 
public class Main {
  public static void main(String[] args) {
    int denom = 0;
    int num = 3;
    if (denom != 0 && num / denom > 10) {
      System.out.println("Here");
    } else {
      System.out.println("There");
    }
  }
}

输出:

如果我们想要改变逻辑运算符的快捷行为,我们可以使用& 和|。

例2

以下代码使用单个& 确保增量操作将会应用于 e 是否 c 等于1。

 
public class Main {
  public static void main(String[] args) {
    int c = 0;
    int e = 99;
    int d = 0;
    if (c == 1 & e++ < 100)
      d = 100;

    System.out.println("e is " + e);
    System.out.println("d is " + d);
  }
}

输出: