Java 逻辑运算
逻辑运算
基本语法
逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值。
运算符说明:
& 和 &&:表示"且"关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false。
| 和 || :表示"或"关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false
! :表示"非"关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true。
^ :当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false。
理解:异或,追求的是“异”!逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3 < x < 6,应该写成x > 3 & x < 6 。
区分“&”和“&&”:
相同点:如果符号左边是true,则二者都执行符号右边的操作
不同点:& : 如果符号左边是false,则继续执行符号右边的操作
&& :如果符号左边是false,则不再继续执行符号右边的操作
建议:开发中,推荐使用 &&
区分“|”和“||”:
相同点:如果符号左边是false,则二者都执行符号右边的操作
不同点:| : 如果符号左边是true,则继续执行符号右边的操作
|| :如果符号左边是true,则不再继续执行符号右边的操作
建议:开发中,推荐使用 ||
示例
int a = 3; int b = 4; int c = 5; //&;有 false 返回 false System.out.println((a > b) & (a > c)); // flase System.out.println((a > b) & (a < c)); // flase System.out.println((a < b) & (a > c)); // flase System.out.println((a < b) & (a < c)); // true //! 有 true 返回 true System.out.println((a > b) | (a > c)); //false System.out.println((a > b) | (a < c)); //true System.out.println((a < b) | (a > c)); //true System.out.println((a < b) | (a < c)); //true //^ 相同 flase .不同 true System.out.println((a > b) ^ (a > c)); //fasle System.out.println((a > b) ^ (a < c)); //true System.out.println((a < b) ^ (a > c)); //true System.out.println((a < b) ^ (a < c)); //fasle //! 非,取反 System.out.println(!false); // true System.out.println(!true); //flase //& 和 && System.out.println((a > b) & (a++ > c)); //fasle System.out.println("a = " + a); // System.out.println((a > b) && (a++ > c)); //fasle System.out.println("a = " + a); // System.out.println((a == b) && (a++ > c)); //false System.out.println("a = " + a); // //| 和 || System.out.println((a > b) | (a++ > c)); //true System.out.println("a = " + a); // System.out.println((a > b) || (a++ > c)); //true System.out.println("a = " + a); // System.out.println((a == b) || (a++ > c)); // true System.out.println("a = " + a); //
综合练习
1. 定义类 CompareLogicExer
2. 定义 main方法
3. 定义一个int类型变量a,变量b,都赋值为20
4. 定义boolean类型变量bo1 , 判断++a 是否被3整除,并且a++ 是否被7整除,将结果赋值给bo1
5. 输出a的值,bo1的值
6. 定义boolean类型变量bo2 , 判断b++ 是否被3整除,并且++b 是否被7整除,将结果赋值给bo2
7. 输出b的值,bo2的值
int a = 20; int b = 20; boolean bol = ((++a % 3) == 0) && (((a++ & 7) == 0)); System.out.println("bol 值为 " + bol); //false ; System.out.println("a 值为 " + a); //22 boolean bo2 = ((b++ % 3) == 0) && (((++b & 7) == 0)); System.out.println("bo2 值为 " + bo2); //false ; System.out.println("b值为 " + b); //21
练习:程序输出
boolean x = true; boolean y = false; short z = 42; if ((z++ == 42) && (y = true)) { z++; } if ((x = false) || (++z == 45)) { z++; } System.out.println("z=" + z);