欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

java中i=i++和j=i++的区别小结

时间:2021-08-17 07:33:40|栏目:JAVA代码|点击:

i=i++;j=i++的区别

i=i++-----------在java中 这个语句的前后顺序应该是这样的(tmp=i;i++;tmp==i)

java的编译器在遇到i++和i- -的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,下面首先看一下如果是j=i++的情况:

 

i的原始值存放在后开辟的内存中,最后这个值将赋值给j,这样j=i++后,j就会得到i的值,而i又将自加,所以,在释放内存之后,原来存放j和i的地方将得到值将是:j(此时的值等于初始i值)和i(i自加后的值)。

看看i=i++的情况:

 

i的原始值存放在后开辟的内存中,给刚开始的i进行自加,最后再将后面内存中的i赋给刚开始的i.

我们来看看这两个程序反编译的结果

这个是i=i++; 

 

1:   iconst_0   整型常量值0进栈

2:   istore_1   将栈顶整型数值存入第二个局部变量

3:   iload_1  第二个整型局部变量进栈

4:   iinc    1, 1 指定整型变量增加指定值

5:   istore_1  将栈顶整型数值存入第二个局部变量

 j = i++;

 

反编译后是这样的

7:   iconst_0  整型常量值0进栈

8:   istore_1  将栈顶整型数值存入第二个局部变量

9:   iconst_0  整型常量值0进栈

10:  istore_2 将栈顶整型数值存入第三个局部变量

11:  iload_2  第三个整型局部变量进栈

12:  iinc    2, 1 指定整型变量增加指定值

15:  istore_1  将栈顶整型数值存入第二个局部变量

总结

上一篇:Spring Boot 配置文件详解(小结)

栏    目:JAVA代码

下一篇:深入Java冒泡排序与选择排序的区别详解

本文标题:java中i=i++和j=i++的区别小结

本文地址:http://www.codeinn.net/misctech/167563.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有