java中 i = i++ 的结果
2024-08-26 07:27:55
昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论。
int i = 0;
i = i++;
System.out.println("i的值是 "+i);
根据我们通常所知道的后自增先使用后增加的道理,i++在使用后i自身会增加一个数值,初始值为0时,自增后就是1,那么输出的结果应该是1.但实际上这题的结果却是0。
这是因为jvm在处理i = i++时, 会建立一个临时变量来接收i++的的值,然后返回这个临时变量的值,返回的值再被等号左边的变量接收了,这样就是说i虽然自增了但是又被赋值了0,这样输出的结果自然就是0了。
不妨我们用temp临时变量来接收i++的值,来看一下结果。
可以看到temp的结果就是0,也就是说赋值号右边传递过来的是i未自增前的值,这符合后自增运算符先使用后增加的原则,这时候我们再输出一下i的值。
i也的确自增了一个值,这样就好理解为什么i = i++中输出第一个i为什么是0了,因为i在自增后又被等式右边的值覆盖了。也就是说这里的i的值发生了三次变化,第一次是我们定义i = 0;第二次就是i自增后变成了1;第三次就是i又被0值覆盖了。
最新文章
- HDU 1051 Wooden Sticks
- 深入理解openstack网络架构(1)
- Android ADB 命令大全
- MVC自带的校验
- 关于app上页面和js的调试
- js跨域及解决方法
- SICP 习题(1.1,1.2,1.3,1.4)解题总结。
- phpexcl导出数据
- QQ空间魔力日志大全SduSRZ
- python+selenium 环境搭建以及元素定位
- 解决VS打开文件出现No EditorOptionDefinition export found for the given option name问题
- Js中this机制全解
- POJ 2796[UVA 1619] Feel Good
- zabbix通过简单命令监控elasticsearch集群状态
- 为 昂达 v891 安装上了 remix OS 了
- os 模块 和 os模块下的path模块
- UE4 C++ Tips
- 有关 Android Studio 重复引入包的问题和解决方案
- iOS:麦克风权限检测和获取
- 全局获取 (Activity)Context,实现全局弹出 Dialog
热门文章
- zepto animate
- pace.js原理简介
- 1.4.2.4. SAVING(Core Data 应用程序实践指南)
- 如何将php数组或者对象传递给javascript
- redhat6 + 11G RAC 双节点部署
- RMAN-06217: not connected to auxiliary database with a net service name
- Flex移动应用程序开发的技巧和窍门(三)
- lufylegend库 LGraphics绘制图片
- 第一篇:CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )
- Mac bash rc