java 自增变量

本文详细探讨了Java中的自增变量,包括前缀式和后缀式的区别,以及运算规则。同时深入讲解了JVM的栈帧结构,特别是操作数栈和局部变量表的工作原理,阐述了JVM指令如何影响自增操作。通过具体案例说明了自增操作在JVM内部的执行流程。
摘要由CSDN通过智能技术生成

自增变量

前缀式:如 ++i。前缀式是先加1再使用。 后缀式:如 i++。后缀式是先使用再加1
运算规则:
(1)最后再进行赋值=的操作。
(2)=右边的从左到右加载的值依次压入操作数栈。
(3)根据运算符优先级判断计算顺序。
(4)自增、自减操作都是直接修改变量的值,不经过操作数栈。
注意 赋值=,最后计算
=右边的从左边加载值依次压入操作数栈
实际先算哪个,看运算符优先级
自增(++)自减(–) 运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数。

栈帧

栈帧(stack frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。
Java虚拟机以方法作为基本的执行单位,“栈帧”是用于支持虚拟机进行方法调用和执行的数据结构,每一个方法从调用开始到执行结束,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的
虚拟机栈由栈帧组成,栈帧由局部变量表、操作数栈、动态链接和方法返回四部分组成,有的虚拟机还有一些附加信息。

操作数栈

操作数栈也称表达式栈 在方法执行过程中,根据字节码指令,往栈里写入数据或提取数据,即入栈/出栈。 某些字节码指令把值压入操作数栈,其余指令将操作数取出栈。
每一个栈帧中除了包含局部变量表以外,还包含一个后进先出的操作数栈,也称为表达式栈。 操作数栈在方法执行的时候,根据字节码指令,往栈中写入数据或提取数据,即入栈(push)/出栈(pop)。
操作数栈就是JVM执行引擎的一个工作区,当一个方法刚开始执行的时候,一个栈帧会随之创建出来。
例如,iadd指令将添加两个整数值,因此它将从操作数堆栈中弹出顶部的两个整数值,并将它们相加后将结果压入操作数堆栈。

<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值