<Java>你知道i=i++的运行结果是怎么计算的吗?
2021/6/5 20:51:07
本文主要是介绍<Java>你知道i=i++的运行结果是怎么计算的吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
有如下一段代码,可以先尝试计算一些运行的结果
public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("k=" + k); }
.
.
.
.
.
.
.
.
.
.
.
.
运行结果
i=4
j=1
k=11
分析如下
int i=1;
这句执行结束后局部变量表中i
的值就为1
i=i++;
执行这一句过程如下
①把i
的值压入操作数栈,那么操作数栈中值为1
②执行i++
操作,那么局部变量表中i
的值为2
③最后执行赋值
操作,把操作数栈中的值赋值给i
,于是局部变量表中i
的值被覆盖,变成1,因此i=1
int j=i++
①先把i
的值压入操作数栈,那么操作数栈中值为1
②执行i++
操作,局部变量表中i的值就变为2
③最后执行赋值
操作,此时操作数栈中的值为1,因此j
赋值为1,此时j=1,i=2
int k=i + ++i * i++;
虽然是先算乘法,但是压入操作数栈的过程是从左到右
因此过程如下
①先将i
的值压入操作数栈,操作数栈的值为2
②执行++i
操作,那么局部变量表中i
的值就变为3
③注意,由于等式右边的计算尚未结束,因此i
的值要压入操作数栈,因此栈中有两个元素,[2,3]
(右边为栈顶)
④执行i++
,先将i
的值压入操作数栈,此时栈中有三个元素,[2,3,3]
(右边为栈顶),然后执行i自增
,局部变量表中i
的值就变为4
⑤把操作数栈中前两个数弹出,执行乘积操作,3*3=9
,那么把9
压到操作数栈中,此时栈中有两个元素,[2,9]
(右边为栈顶)
⑥把操作数栈中前两个数弹出,执行加法操作,9+2=11
⑦此时等式右边已经计算完成,赋值给k,所以k=11
因此答案为
i=4
j=1
k=11
这篇关于<Java>你知道i=i++的运行结果是怎么计算的吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求