Java中赋值运算符(=)是有返回值的表达式,返回右操作数值且类型与左操作数声明类型一致;支持链式赋值如x=y=z=10,并可用于条件判断如if((c=getValue())!=null),复合赋值符如+=同样返回赋值后的左操作数值。

Java 中的赋值运算符(=)本身是一个**有返回值的表达式**,它返回被赋的**右操作数值**,且类型与左操作数的声明类型一致(经隐式转换后)。
赋值表达式返回的是右边的值
例如:
int a = 5; —— 这条语句中,a = 5 是一个表达式,值为 5,类型为 int。
所以你可以这样写:
int b = (a = 5); —— 先执行 a = 5(返回 5),再把 5 赋给 b。最终 a 和 b 都是 5。
支持链式赋值
因为赋值表达式有返回值,多个赋值可以连写:
-
int x, y, z; x = y = z = 10; —— 等价于
z = 10→ 返回10,再y = 10→ 返回10,再x = 10 - 注意:必须保证变量已声明,且类型兼容(如不能
int a = (b = 3.14),因为double不能隐式转int)
常用于条件判断或初始化场景
虽然不推荐过度使用,但语法上允许:
- if ((c = getValue()) != null) { ... } —— 先赋值再判断
- while ((line = reader.readLine()) != null) { ... } —— 经典用法,读一行、赋值、判空,三步合一
- 注意括号不能省:
if (c = getValue() != null)会先算getValue() != null(布尔值),再试图赋给c(类型不匹配,编译失败)
复合赋值运算符也返回值
+=、-=、&= 等复合运算符同样返回赋值后的左操作数值:
-
int d = 3; int e = (d += 2); →
d变成5,表达式值为5,e也是5 - 行为等价于
d = d + 2,只是更简洁且可能更高效(避免重复求值左操作数)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











