运算符
逻辑运算
-
与运算 && (并且):有 false 就是 false
false && false -> false false && true -> false true && false -> false true && true -> true
-
或运算 ||:有 true 就是 true
false || false -> false false || true -> true true || false -> true true || true -> true
-
非 ! 表示:否则关系
!false -> true !true -> false
-
经典案例:判断闰年问题
-
闰年规则:
- 年份能被4整除 并且不能被100整数的年数是闰年:4年一润,百年不润
- 年份能够被400整除,也是闰年:400年再润
-
如上规则可以解释为:
(规则1) || (规则2) ((条件1)&&(条件2)) || (规则2) ((年份%4==0)&& !(年份%100==0)) || (年份%400==0)
-
代码:
public static void main(String[] args) { /** * 逻辑运算演示 * 判断一个年份是否是闰年 */ Scanner console = new Scanner(System.in); System.out.print("输入年份:"); int year = console.nextInt(); boolean b = ((year%4==0) && !(year%100==0)) || (year%400==0); System.out.println(b); }
-
短路逻辑现象
-
短路“与”计算 && : 第一个条件是false时候,执行短路规则,不执行第二个表达式
- 代码:
char sex = '男'; int age = 66; boolean b = sex == '女' && age++ >= 60; //如何检测 第二个 表达式是否执行了? 利用++计算作为探针检测 //第二个表达式是否执行 System.out.println(b);//false System.out.println(age);//66
- 代码:
-
短路“或”计算 || : 第一个条件是true时候,执行短路规则,不执行第二个表达式
- 代码:
public static void main(String[] args) { /** * 测试 短路逻辑计算 */ //设定短路条件 char sex='男'; int age = 66; //测试短路逻辑计算 boolean b = sex == '女' && age++ >= 60; System.out.println(b); System.out.println(age); //在&&计算时候,第一个表达式为false时候,就直接 //得到整体 && 计算的结果,跳过第二个表达式的执行。 }
- 代码: