逻辑运算符(logical operator)

落花浮王杯 提交于 2019-11-28 05:02:59
逻辑运算“与”(&&)、“或”(||)、“非”(!)能根据参数的逻辑关系,生成一个布尔值(true
或 false)。下面这个例子就使用了关系和逻辑操作符。




//: c03:Bool.java
// Relational and logical operators.
import com.bruceeckel.simpletest.*;
import java.util.*;




public class Bool {
static Test monitor = new Test();
public static void main(String[] args) {
 








    Random  rand = new Random();
int i = rand.nextInt(100);
int j = rand.nextInt(100);
    System.out.println("i = " + i);
    System.out.println("j = " + j);
    System.out.println("i > j is " + (i > j));
    System.out.println("i < j is " + (i < j));
    System.out.println("i >= j is " + (i >= j));
    System.out.println("i <= j is " + (i <= j));
    System.out.println("i == j is " + (i == j));
    System.out.println("i != j is " + (i != j));
    // Treating an int as a boolean is not legal Java:
//! System.out.println("i && j is " + (i && j));
//! System.out.println("i || j is " + (i || j));
//! System.out.println("!i is " + !i);
    System.out.println("(i < 10) && (j < 10) is "
       + ((i < 10) && (j < 10)) );
    System.out.println("(i < 10) || (j < 10) is "
       + ((i < 10) || (j < 10)) );
    monitor.expect(new String[] {
"%% i = -?\\d+",
"%% j = -?\\d+",
"%% i > j is (true|false)",
"%% i < j is (true|false)",
"%% i >= j is (true|false)",
"%% i <= j is (true|false)",
"%% i == j is (true|false)",
"%% i != j is (true|false)",
"%% \\(i < 10\\) && \\(j < 10\\) is (true|false)",
"%% \\(i < 10\\) \\|\\| \\(j < 10\\) is (true|false)"
    });
  } 
} ///:~




在 expect()语句包含的正则表达式中,使用小括号能把表达式分组,而’|’表示逻辑“与”。
所以:




(true|false)




意指:字符串的这部分不是’true’就是’false’。因为这些字符在正则表达式中有特殊的
含义,所以如果你希望它们像普通字符一样出现在表达式中,就必须用一个’\\’来转义。


逻辑与、逻辑或、逻辑非操作只可应用于布尔值。与在 C 及 C++中不同的是:不可将一个
非布尔值当作布尔值在逻辑表达式中使用。在前面的代码中用“//!”注释掉的语句,就是错误
 






的用法。后面的两个表达式先使用关系比较运算,生成布尔值,然后再对产生的布尔值进行
逻辑运算。


注意,如果在应该使用 String 值的地方使用了布尔值,它会自动转换成适当的文本。


在上述程序中,可将整数类型替换成除布尔型以外的其他任何基本数据类型。但要注意,对
浮点数的比较是非常严格的。即使一个数仅在小数部分与另一个数存在极微小的差异,仍然

认为它们是“不相等”的。即使一个数只比零大一点点,它仍然是“非零”值。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!