java基础面试题之:i++与++i的区别
源代码
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的区别相关推荐
- 100道Java基础面试题收集整理(附答案)
不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...
- 判断一个java对象中的属性是否都未赋值_100道Java基础面试题(一)
100道Java基础面试题(一)未来大家将步入职场,面试的时候面试官还会问大家一些Java相关的问题.小编整理出100道非常实用的面试题目,可以帮助双体的小伙伴应对面试,我们一起来看看都有哪些吧! 1 ...
- Java继承_30道最常问的Java基础面试题
30道最常问的Java基础面试题 1. 面向对象和面向过程的区别面向过程优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采 ...
- Java 基础面试题,java基础面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- Java进阶篇(六)——Swing程序设计(上),java面试题,java基础笔试题,BAT
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Sw ...
- Java基础知识面试题(2021最新版)
转载自:https://thinkwon.blog.csdn.net/article/details/104390612 文章目录 Java概述 何为编程 什么是Java jdk1.5之后的三大版本 ...
- Java基础-面试题精华(2021最新)
Java基础-面试题精华 提示:本人已经成功帮助20多位面试者斩获BAT大厂offer,现在把自己的笔记分享出来,提炼出高频java面试题目,都是干货,觉得有用的话,记得点赞收藏哦,后期会上sprin ...
- 人类高质量Java基础面试题大全,又是一篇三万字的总结!
点击主页访问更多精彩文章:https://blog.csdn.net/weixin_45692705?spm=1001.2101.3001.5343 Java基础面试题目录 共勉 ! Java概述 1 ...
- java基础面试题(九)
java基础面试题(九) SpringBoot/SpringCloud 什么是SpringBoot? 在Spring框架这个大家族中,产生了很多衍生框架,比如Spring.Springmvc框架等,S ...
- 2022 最新 Java 基础 面试题(一)
2022 最新 Java 基础 面试题(一) 1.面向对象的特征有哪些方面? 3.String 是最基本的数据类型吗? 4.float f=3.4;是否正确? 5.short s1 = 1; s1 = ...
最新文章
- pytorch randomresizedcrop
- Redis启动多端口,运行多实例(转)
- 蓝桥杯 错误票据 (stringstream的使用)
- SSM中配置log4J输出sql语句
- 获取dbgrid的行索引
- 快速广义的形态分量分析 matlab,独立分量分析法降噪技术研究
- Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)
- python图形模块_使用Python图形模块:有没有办法将当前窗口保存为图像?
- BIEE入门(一)架构
- Nginx 极简入门教程
- java锁的膨胀过程和优化
- 判断两个字符串是否相似的函数 AnsiResemblesText 专题研究
- 程序员不应该“躺平”
- linux安装R3.5.0
- 网络综合实验结课总结
- Python的伪造数据生成器:Faker
- Java之父詹姆斯•高斯林趣闻
- server2003 必要的系统优化和安全设置
- 计算机数据压缩说课,第3章多媒体数据压缩.ppt
- vue-router前端路由的两种模式的区别
热门文章
- 传聊天宝团队解散 罗永浩已退出股东行列
- 车和家李想批国内电动车虚假里程宣传:特斯拉都打到家门口了别自嗨了
- 啥操作?男子改装路边电话亭玩游戏 中国电信回应将核实该情况
- 富爸爸系列 -- 《财务自由》学习笔记之三
- python emoji 表情过滤
- shell 12 21 filename重定向的含义和区别
- 华为畅享max有没有人脸识别_华为三款5000mAh超大电池手机,都是续航王者,最低只要1499元...
- oracle下载配置文件,oracle 11G、12C BBED 配置和库文件下载!
- ethtool源码分析
- 【java】java JVM如何科学的设置内存参数 虚拟机调优案例