合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## [逻辑运算符](https://lingcoder.gitee.io/onjava8/#/book/04-Operators?id=%e9%80%bb%e8%be%91%e8%bf%90%e7%ae%97%e7%ac%a6) 每个逻辑运算符`&&`(**AND**)、`||`(**OR**)和`!`(**非**)根据参数的逻辑关系生成布尔值`true`或`false`。下面的代码示例使用了关系运算符和逻辑运算符: ~~~ // operators/Bool.java // 关系运算符和逻辑运算符 import java.util.*; public class Bool { public static void main(String[] args) { Random rand = new Random(47); 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)); // 将 int 作为布尔处理不是合法的 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)) ); } } ~~~ 输出结果: ~~~ i = 58 j = 55 i > j is true i < j is false i >= j is true i <= j is false i == j is false i != j is true (i < 10) && (j < 10) is false (i < 10) || (j < 10) is false ~~~ 在 Java 逻辑运算中,我们不能像 C/C++ 那样使用非布尔值, 而仅能使用**AND**、**OR**、**NOT**。上面的例子中,我们将使用非布尔值的表达式注释掉了(你可以看到表达式前面是 //-)。但是,后续的表达式使用关系比较生成布尔值,然后对结果使用了逻辑运算。请注意,如果在预期为**String**类型的位置使用**boolean**类型的值,则结果会自动转为适当的文本格式(即 "true" 或 "false" 字符串)。 我们可以将前一个程序中**int**的定义替换为除**boolean**之外的任何其他基本数据类型。但请注意,**float**类型的数值比较非常严格,只要两个数字的最小位不同则两个数仍然不相等;只要数字最小位是大于 0 的,那么它就不等于 0。