跳到内容

元数据卡

  • 前置知识:第2章 变量与类型
  • 预计时间:12 分钟
  • 阅读模式:高度专注
  • 完成标志:能说清楚什么是表达式;能正确使用赋值与三元操作符;能在必要时加括号控制优先级

你在变量村住了几天,每天路过老陈的铁匠铺都能听到叮叮当当的敲打声。这天你站在铺门口,老陈刚从炉子里夹出一块通红的铁——就是上一章你声明的那些变量:int apples = 5double price = 3.5

它们整整齐齐躺在你口袋里。但光有口袋有什么用?

"小伙子,"老陈擦了把汗,"你口袋里装了苹果和价格——然后呢?你得让它们动起来。"

他说得对。变量不是收藏品。让变量"动起来"的,就是表达式


第一幕:总价 = 数量 × 单价

阿花站在你面前:"我要 apples 个苹果,单价 price 铜币——总价多少?"

你一拍脑袋:第2章学的变量全派上用场了。

java
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 不累吗?"

java
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

有时你只想根据条件选两值之一:

java
// 三元写法——一行搞定
String msg = (score >= 60) ? "及格" : "不及格";

语法条件 ? 值1 : 值2——条件 true 取值1,否则取值2。常用它赋默认值:

java
String displayName = (nickname != null) ? nickname : fullName;

但不要嵌套三元:a ? b ? c : d : e


优先级——谁先算?

java
int result = 10 + 3 * 2; // 16,不是 26

因为 * 优先级高于 +,和数学一样。

完整优先级表(从高到低):()++ -- ! (type)* / %+ -< > <= >=== !=&&||= += ...

实战建议:拿不准就加括号。

java
// 清楚
double finalPrice = (total > 100) ? (total * 0.9) : total;

三句口诀:括号最高 → 算术先于关系 → 关系先于逻辑 → 赋值最低


旅人笔记

表达式 = 变量 + 操作符 = 新值。复合赋值 += 人人用,三元 ?: 简洁高效。拿不准优先级就加括号——新手老手都这么做。


下一站:算术运算符

+ - * / % 这些工具有什么坑?整数除法的截断、取余的妙用、自增自减的前后区别——在 ch03-operators-arithmetic.md

Built with VitePress | Software Systems Atlas