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  将栈顶整型数值存入第二个局部变量

java i=i++和j=i++的区别相关推荐

  1. java的 x跟x_关于语法:java中的x ++和++ x有区别吗?

    java中的++ x和x ++有区别吗? 提示大量相同的答案...... ...并提出第一个完全相同的答案... 最快的去战利品,按最旧排序,点击upvote.ohowoho. 我确信我有它! 无论如 ...

  2. java中成员变量和全局变量的区别_成员变量与全局变量的区别

    全局变量:也叫成员变量,是指在类中定义的变量:它在整个类中都有效 全局变量又可分为:类变量和实例变量 1.类变量:又叫静态变量  用static修饰  它可以直接用类名调用  也可以用对象调用   而 ...

  3. java接口比继承优秀的地方,实现和继承的区别 java 实现接口和继承有什么区别...

    Java中继承和实现的区别 理论上:类只能单继承,接口可以多继承(接口应该叫实现): 实践上:小编们说类的继承一般继承的是事物的属性,如:姓名,年龄,性别 等,而接口的继承(或者说实现)一般是继承事物 ...

  4. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  5. java虚拟机参数-X 与 -XX的区别

    java虚拟机参数-X 与 -XX的区别 java虚拟机参数-X 与 -XX的区别 为什么有的用-X 如,-Xms -Xmx -Xmn等 有的用-XX: 如-XX:MaxPermSize=100M等 ...

  6. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  7. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  8. Java中long和Long有什么区别

    Java中long和Long有什么区别(转) Java的数据类型分两种: 1.基本类型:long,int,byte,float,double,char 2. 对象类型(类): Long,Integer ...

  9. java加载c库阻塞_【死磕Java並發】-----J.U.C之阻塞隊列:DelayQueue

    DelayQueue是一個支持延時獲取元素的無界阻塞隊列.里面的元素全部都是"可延期"的元素,列頭的元素是最先"到期"的元素,如果隊列里面沒有元素到期,是不能從 ...

最新文章

  1. python商城源码_腾讯大佬用了12小时讲完的Python,整整400集,拿走不谢
  2. 使用ST05研究customer product id存储逻辑
  3. LeetCode 261. 以图判树(全部连通+边数=V-1)
  4. Halcon算子学习:xyz_to_object_model_3d
  5. restful是什么
  6. java在线聊天项目 使用SWT快速制作登录窗口,可视化窗口Design 更换窗口默认皮肤(切换Swing自带的几种皮肤如矩形带圆角)...
  7. 第四范式完成超10亿元C轮融资,估值12亿美元
  8. R语言中如何查看已安装的R包
  9. 计算机办公自动化试题及答案,计算机等级考试,办公自动化考试试题(三)
  10. 基于python实现的线性回归基础
  11. 听dalao讲课 7.26
  12. sublime text 编译时提示[WinError 2] 系统找不到指定的文件。
  13. 关于verilog全加器
  14. 前端工具之WebStorm安装破解和汉化
  15. 计算机组成原理实验二 存储器实验
  16. 根据flavors设置buildType中debug的签名文件
  17. 心率脉搏测试c语言算法,基于51单片机语音播报心率计脉搏测量仪设计(仿真源码+电路图+当时PaperPass16%查重论文)...
  18. 我学会了用ethtool给网卡点灯
  19. java全景图片生成_如何制作全景图片?
  20. Facebook在安全漏洞后重置对9000万账户的访问权限

热门文章

  1. WPS插件开发流程(2)
  2. 综合布线中的配线架与理线架
  3. 如何理解Quorum
  4. 顶会中的对比学习论文-2
  5. 解析dump的几种方式
  6. Win10 串口编程
  7. Android AssetManager 1
  8. python实验结论_Python基础(上)实验报告
  9. sidebar(侧边栏文字)
  10. STM32驱动ADXL345三轴传感器