元数据卡
- 前置知识:第2章 变量与类型;第3章 表达式
- 预计时间:10 分钟
- 阅读模式:高度专注
- 完成标志:能正确使用关系运算符;能解释短路求值;能区分
==和=
算术操作符让数字"动了起来"。但程序不能只会算数——它需要判断。
阿花问:"这袋苹果超过 20 个了吗?" 你需要 boolean——比较运算符和逻辑运算符就是干这个的。
第一幕:超过 20 个了吗?
java
int apples = 25;
boolean isEnough = apples > 20; // true
boolean exactlyTen = apples == 10; // false(双等号!)
boolean notZero = apples != 0; // true
boolean atLeastFive = apples >= 5; // true
boolean lessThanTen = apples < 10; // false语言:Java | 预期输出:true false true true false
关系操作符产生布尔值——这是第4章 if 的基础。
🔥 千万注意: == 是判断、= 是赋值。= 是动作,== 是疑问。
第二幕:两个条件一起看
老陈:"既是会员 又消费超过 100 铜币才能打 9 折。"
java
boolean isMember = true;
double spent = 150.0;
boolean canDiscount = isMember && spent > 100; // true(AND)
boolean isPremium = isMember || spent > 200; // true(OR)
boolean notMember = !isMember; // false(NOT)| 操作符 | 作用 | 读法 |
|---|---|---|
&& | 两边都 true 才 true | "且" |
|| | 一边 true 就 true | "或" |
! | 颠倒真假 | "非" |
短路求值——编译器"偷懒"
java
int a = 5;
boolean result = (a > 10) && (a++ > 0);
System.out.println(a); // 5 —— a++ 没执行!a > 10 已是 false——&& 知道"一边 false 整条就 false",右边 a++ 根本没执行。这叫短路求值。
用它做判空保护:
java
obj != null && obj.getValue() > 5 // 左边不成立,右边不会执行浮点数比较——永远别用 ==
java
System.out.println(0.1 + 0.2); // 0.30000000000000004二进制浮点数的宿命。安全做法:
java
if (Math.abs(a - 0.3) < 1e-10) System.out.println("近似相等");旅人笔记
关系操作符产生布尔值;逻辑操作符组合布尔值。= 是动作,== 是疑问。短路求值是判空好搭档。
→ 下一站:练习与排障
整章操作符揉在一起实战——在 ch03-lab-operators.md。