两个概念:
局部变量表:类被创建后的一小块内存区域,存放当前类的局部变量值
操作数栈:栈帧中的一小块内存区域,专门用于存放计算的中间结果值
三个点:
1:赋值操作其实是把操作数栈中的中间结果值进行计算后再赋值给某个变量,是最后一步操作
2: i++ 是指先把i放入操作数栈中,自身局部变量表中的i变量自增+1
3: ++i 是先把局部变量表i的值自增+1,再放入到操作数栈
例子一:
输出的b是多少,应该很多人都知道是1,因为大学时候老师说过a++是先使用a,再++
但是a因为++了,所以是2
执行过程:
(1)局部变量表的a被赋值为1,没发生计算,操作数栈空
(2)a ++ ,先把a放入了操作数栈,然后局部变量表a自增+1,所以a=2。这时候赋值给b,赋值操作是把操作数据的1拿出来给b,所以b=1
执行结果: