源代码

  int i = 0;

i = i++;

System.out.println(i);

int j=5;

j=++j;

System.out.println(j);

反编译:

i++内存表现:

Code:

0: iconst_0

1: istore_1

2: iload_1

3: iinc          1, 1

6: istore_1

++i的内存表现:

Code:

14: iconst_5

15: istore_2

16: iinc          2, 1

19: iload_2

20: istore_2

我用excel对比了一下:

区别很明显了:

i++在本地变量加了1之后,直接将栈顶数值推送到了本地变量,覆盖了+1的操作,所以i++缺少了一个将本地变量推送到栈顶的步骤

++i是本地变量加1,再将本地变量推送到栈顶,再由栈顶推送到本地变量,完美的完成了增加操作

留下一个疑惑:

int i = 0; i = i++ + i++;

System.out.print(i) ;

打印结果是1,看了反编译结果,i++之后有一次将本地变量值推入栈顶的操作,第二次i++无效

现在的问题是不知道jvm更深入的操作机制,也就是说不了解在什么情况下会触发本地变量值推入栈顶的操作。待以后解决。

转载于:https://www.cnblogs.com/wowotou-lin/p/11352740.html

java基础面试题之:i++与++i的区别相关推荐

  1. 100道Java基础面试题收集整理(附答案)

    不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...

  2. 判断一个java对象中的属性是否都未赋值_100道Java基础面试题(一)

    100道Java基础面试题(一)未来大家将步入职场,面试的时候面试官还会问大家一些Java相关的问题.小编整理出100道非常实用的面试题目,可以帮助双体的小伙伴应对面试,我们一起来看看都有哪些吧! 1 ...

  3. Java继承_30道最常问的Java基础面试题

    30道最常问的Java基础面试题 1. 面向对象和面向过程的区别面向过程优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采 ...

  4. Java 基础面试题,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  5. Java进阶篇(六)——Swing程序设计(上),java面试题,java基础笔试题,BAT

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Sw ...

  6. Java基础知识面试题(2021最新版)

    转载自:https://thinkwon.blog.csdn.net/article/details/104390612 文章目录 Java概述 何为编程 什么是Java jdk1.5之后的三大版本 ...

  7. Java基础-面试题精华(2021最新)

    Java基础-面试题精华 提示:本人已经成功帮助20多位面试者斩获BAT大厂offer,现在把自己的笔记分享出来,提炼出高频java面试题目,都是干货,觉得有用的话,记得点赞收藏哦,后期会上sprin ...

  8. 人类高质量Java基础面试题大全,又是一篇三万字的总结!

    点击主页访问更多精彩文章:https://blog.csdn.net/weixin_45692705?spm=1001.2101.3001.5343 Java基础面试题目录 共勉 ! Java概述 1 ...

  9. java基础面试题(九)

    java基础面试题(九) SpringBoot/SpringCloud 什么是SpringBoot? 在Spring框架这个大家族中,产生了很多衍生框架,比如Spring.Springmvc框架等,S ...

  10. 2022 最新 Java 基础 面试题(一)

    2022 最新 Java 基础 面试题(一) 1.面向对象的特征有哪些方面? 3.String 是最基本的数据类型吗? 4.float f=3.4;是否正确? 5.short s1 = 1; s1 = ...

最新文章

  1. pytorch randomresizedcrop
  2. Redis启动多端口,运行多实例(转)
  3. 蓝桥杯 错误票据 (stringstream的使用)
  4. SSM中配置log4J输出sql语句
  5. 获取dbgrid的行索引
  6. 快速广义的形态分量分析 matlab,独立分量分析法降噪技术研究
  7. Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)
  8. python图形模块_使用Python图形模块:有没有办法将当前窗口保存为图像?
  9. BIEE入门(一)架构
  10. Nginx 极简入门教程
  11. java锁的膨胀过程和优化
  12. 判断两个字符串是否相似的函数 AnsiResemblesText 专题研究
  13. 程序员不应该“躺平”
  14. linux安装R3.5.0
  15. 网络综合实验结课总结
  16. Python的伪造数据生成器:Faker
  17. Java之父詹姆斯•高斯林趣闻
  18. server2003 必要的系统优化和安全设置
  19. 计算机数据压缩说课,第3章多媒体数据压缩.ppt
  20. vue-router前端路由的两种模式的区别

热门文章

  1. 传聊天宝团队解散 罗永浩已退出股东行列
  2. 车和家李想批国内电动车虚假里程宣传:特斯拉都打到家门口了别自嗨了
  3. 啥操作?男子改装路边电话亭玩游戏 中国电信回应将核实该情况
  4. 富爸爸系列 -- 《财务自由》学习笔记之三
  5. python emoji 表情过滤
  6. shell 12 21 filename重定向的含义和区别
  7. 华为畅享max有没有人脸识别_华为三款5000mAh超大电池手机,都是续航王者,最低只要1499元...
  8. oracle下载配置文件,oracle 11G、12C BBED 配置和库文件下载!
  9. ethtool源码分析
  10. 【java】java JVM如何科学的设置内存参数 虚拟机调优案例