前置自增++i先改值后使用,返回新值;后置自增i++先使用原值再改值,返回旧值。例如i=5时,a=++i得a=6、i=6,而b=i++得b=5、i=6。

前置和后置自增(++)的核心区别,就看“谁先发生”:是先改值再用,还是先用原值再改。
前置 ++i:先加 1,再参与运算
变量立刻加 1,整个表达式返回的是加完之后的新值。
- 比如
int i = 5; int a = ++i;,执行后i变成 6,a也等于 6 - 常用于需要“更新后再使用”的场景,例如提前推进循环下标、作为函数参数传入新值
后置 i++:先用原值,再加 1
表达式先取当前值参与计算,语句执行完才把变量加 1。
- 比如
int i = 5; int b = i++;,执行后b是 5,i才变成 6 - 常见于“取完再走”,比如遍历数组时先读
arr[i],再让i移到下一个位置
单独使用时没区别,但嵌入表达式就容易出错
写成 i++ 或 ++i 单独一行,效果完全一样——变量都加了 1,也不产生返回值干扰。
- for 循环里
for (int i = 0; i 换成 <code>++i,字节码几乎一致,无需纠结 - 但一旦混进赋值或算术表达式,比如
int x = 3; int y = x++ + ++x;,结果依赖求值顺序,逻辑难读且易错 - 这类写法不推荐,应拆成多步:先明确改值,再参与运算
不能用在哪些地方
自增自减只认“能被修改的变量”,不是所有东西都能加加减减。
- 不允许对常量操作:
5++编译报错 - 不允许对表达式操作:
(a + b)++、++(x * 2)都非法 - final 变量也不能自增:
final int x = 3; x++;同样通不过编译
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











