1.
i++:先取i值,然后i+1
++i:先i+1,然后取i值
所以单单是++i;或i++是没有什么区别的.但在while(i++>10)~~~,或if(++i<9)的时候就要考虑取值先后问题.
2.
int i,j;
i=1;
j=i++; //j=++i;
以上代码,j=i++之后,得j=1,i=2;j=++i之后,是j=2,i=2.
3.
int i=1;
i=++i; //i = i++;
前者i的值是2;而后者依然是1.
不是增值1的吗?为什么后者还是1?
原因就要说一下java文件,编译成class文件的字节码了.
你可以使用javap -c *** 看下程序的汇编代码
int i = 0;
i = i++;
Code:
0: iconst_0 //将int类型常量0压入栈
1: istore_1 //将int类型值存入局部变量1
2: iload_1 //从局部变量1中装载值
3: iinc 1, 1 //局部变量1的值+1
6: istore_1 //存入局部变量1中
7: return //函数结束
所以它是先赋值,i=i(即i=0),然后对一个局部变量进行了+1操作
int i = 0;
i = ++i;
Code:
0: iconst_0 //将int类型常量0压入栈
1: istore_1 //将int类型值存入局部变量1
2: iinc 1, 1 //局部变量1的值+1
5: iload_1 //从局部变量1中装载值
6: istore_1 //存入局部变量1中
7: return //函数结束
iconst_0的i代表int类型,const代表常量,0代表值为0.
可以这样理解一下,
int i=1;i=++i;是先int temp;temp = i(1);temp = i+1(2);再赋值i,i=temp(2);
int i=1;i=i++;//int temp;temp = i(1);这时就赋值了i=temp(1);同时temp又被清理了,所以再i=i++; n次也是只能i值为1.
参考:
- 关注性能: 宏性能基准测试
http://www.ibm.com/developerworks/cn/java/j-perf12053/index.html
- 变量声明到底在循环外部好还是在循环内部好?
http://blog.csdn.net/virtualman2000/archive/2006/08/29/1138496.aspx
- JAVA经验谈:尽可能使用堆栈变量
http://www.bianceng.cn/java/j33.htm
- 主题:深入了解Java ClassLoader Bytecode ASM cglib
http://www.iteye.com/topic/98178
分享到:
相关推荐
广东省珠海市2019版高一下学期地理期末考试试卷(I)卷.pdf
广东省珠海市2021版八年级下学期数学期中考试试卷(I)卷.pdf
广东省珠海市2020年(春秋版)高一下学期地理期末考试试卷(I)卷.pdf
广东省珠海市2020年(春秋版)高一上学期语文期中考试试卷(I)卷.pdf
9月17日凌晨消息,据珠海炬力全球销售总监吴章良透露,炬力将于明年3月推出首款...”吴章良透露,该解决方案与苹果iPhone类似:采用触摸屏,没有按键,将于明年3月份量产。 一位珠海炬力人士指出,目前消费者对MP3
珠海港吞吐量发展水平预测报告
房地产市场报告-珠海2019年11月房地产市场月报——中原地产.pdf
参考资料-2010年3月珠海金湾机场东路时代地产珠海金湾项目第(二)标段总承包工程招标文件.zip
珠海市软件产业发展情况ppt.ZIP
珠海宝丽杜邦建材有限公司商业计划书
碧桂园珠海项目定位传播报告
0 u7 [# E9 P# i: i2 y *#0377# EEPROM错误显示 % p" P$ S* O9 O5 j5 j% A *#0427# WATCHDOG信号路径设置 . [' D: f) g' R; x, }* q *#0523# 调节对比度,谨慎修改; ) o- ~* L2 O6 B+ ]) S$ y# i *#0636# ...
《珠海国际文化城》项目可行性研究
参考资料-珠海港吞吐量发展水平预测报告.zip
届广东省珠海市高一上学期语文统考期末试题
参考资料-珠海某大学校区污水处理系统改造土建工程施工组织设计.zip
参考资料-珠海某大学校区污水处理系统改造土建工程施工组织设计方案.zip
魅族:魅族科技成立于2003年3月,总部位于中国广东省珠海市。公司致力于向消费者提供国际一流性能和品质的电子产品,并立足于中高端市场。2006年被评为高新技术企业,2007年产值已达到数亿元人民币。主要产品有魅族MX...
日前,珠海欧比特控制工程股份有限公司推出了适用于高可靠性实时控制应用领域的32位嵌入式芯片S698-MIL。该芯片产品可广泛应用于航天航空、工业控制、工程机械、商用电子设备、医用电子设备等领域,很好地填补了国内...
珠海欧比特控制工程股份有限公司(简称:欧比特公司)推出了适用于高可靠性实时控制应用领域的32位嵌入式芯片--S698-MIL。该芯片产品可广泛应用于航天航空、工业控制、工程机械、商用电子设备、医用电子设备等领域,...