元数据卡
- 前置知识:第2章 变量与类型
- 预计时间:12 分钟
- 阅读模式:高度专注
- 完成标志:能说清楚什么是表达式;能正确使用赋值与三元操作符;能在必要时加括号控制优先级
你在变量村住了几天,每天路过老陈的铁匠铺都能听到叮叮当当的敲打声。这天你站在铺门口,老陈刚从炉子里夹出一块通红的铁——就是上一章你声明的那些变量:int apples = 5、double price = 3.5。
它们整整齐齐躺在你口袋里。但光有口袋有什么用?
"小伙子,"老陈擦了把汗,"你口袋里装了苹果和价格——然后呢?你得让它们动起来。"
他说得对。变量不是收藏品。让变量"动起来"的,就是表达式。
第一幕:总价 = 数量 × 单价
阿花站在你面前:"我要 apples 个苹果,单价 price 铜币——总价多少?"
你一拍脑袋:第2章学的变量全派上用场了。
int apples = 5;
double price = 3.5;
double total = apples * price;
System.out.println(total); // 输出:17.5语言:Java 17+ 如何运行:放进 main 方法,javac 编译 + java 运行
apples * price 就是你的第一个表达式。* 是乘法操作符。double total = apples * price; 整行是一个赋值语句——先算右边,再存进左边。
什么是表达式?
能算出值的代码片段就叫表达式。
apples * price → 算出 17.5 ✓ 是表达式
apples > 20 → 算出 true ✓ 是表达式
total → 就是 17.5 ✓ 变量本身也是表达式
5 → 就是 5 ✓ 字面量也是表达式
double total = ... → 不返回值 ✗ 不是表达式(是语句)每个表达式都有一个结果值和类型。apples * price 的结果是 17.5,类型是 double。
赋值操作符——把结果存下来
最简单的你已经见过了:=。但老陈说:"你天天写 x = x + 3 不累吗?"
int x = 10;
x = x + 3; // 13
x += 3; // 16(等价于 x = x + 3)
x -= 2; // 14
x *= 2; // 28
x /= 7; // 4
x %= 3; // 1语言:Java 预期输出:x 最终为 1
+=、-=、*=、/=、%= 都是复合赋值操作符——先运算再赋值。
三元操作符——迷你 if-else
有时你只想根据条件选两值之一:
// 三元写法——一行搞定
String msg = (score >= 60) ? "及格" : "不及格";语法:条件 ? 值1 : 值2——条件 true 取值1,否则取值2。常用它赋默认值:
String displayName = (nickname != null) ? nickname : fullName;但不要嵌套三元:a ? b ? c : d : e。
优先级——谁先算?
int result = 10 + 3 * 2; // 16,不是 26因为 * 优先级高于 +,和数学一样。
完整优先级表(从高到低):() → ++ -- ! (type) → * / % → + - → < > <= >= → == != → && → || → = += ...
实战建议:拿不准就加括号。
// 清楚
double finalPrice = (total > 100) ? (total * 0.9) : total;三句口诀:括号最高 → 算术先于关系 → 关系先于逻辑 → 赋值最低。
旅人笔记
表达式 = 变量 + 操作符 = 新值。复合赋值 += 人人用,三元 ?: 简洁高效。拿不准优先级就加括号——新手老手都这么做。
→ 下一站:算术运算符
+ - * / % 这些工具有什么坑?整数除法的截断、取余的妙用、自增自减的前后区别——在 ch03-operators-arithmetic.md。