首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java基础:深度解析自增操作在JVM底层的执行过程

Java基础:深度解析自增操作在JVM底层的执行过程

原创
作者头像
Java快速干线
发布2025-06-11 16:36:08
发布2025-06-11 16:36:08
2240
举报
文章被收录于专栏:JavaJava

在 Java 中,前自增和后自增运算符的差异体现在 ‌变量值的修改顺序‌ 和 ‌表达式返回值的时机‌。通过 JVM 字节码分析可以清晰理解其底层逻辑。

操作类型

表达式返回值

变量自增时机

字节码执行顺序(以int为例)

前自增

返回自增后的值

先自增,再返回值

iinc → iload

后自增

返回自增前的值

先返回值,再自增

iload → iinc

示例代码和字节码分析

代码语言:java
复制
public class ArithmeticDemo {
    public static void main(String[] args) {
        int x = 1;
        x = x++;
        System.out.println(x);
    }
}

查看JVM加载后的字节码指令操作过程:

0 iconst_1 常量加载:常量1压入操作数栈

1 istore_1 局部变量存储:常量1存储到局部变量表索引1的位置(索引1:x=1)

2 iload_1 局部变量获取:将索引1的值加载到栈顶(栈顶值:1)

3 iinc 1 by 1 算术运算:对索引1位置的值自增1(x=2)

6 istore_1 将栈顶的值存储到索引1位置(索引1:x=1)

7 getstatic #7 <java/lang/System.out : Ljava/io/PrintStream;> 访问静态字段

10 iload_1 加载索引1位置的值

11 invokevirtual #13 <java/io/PrintStream.println : (I)V> 调用println形参为int类型的方法并打印

14 return 方法返回

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档