`

i++ 与 ++i (珠海20090326)

阅读更多
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.



参考:
  1. 关注性能: 宏性能基准测试
  2. http://www.ibm.com/developerworks/cn/java/j-perf12053/index.html
  3. 变量声明到底在循环外部好还是在循环内部好?
  4. http://blog.csdn.net/virtualman2000/archive/2006/08/29/1138496.aspx
  5. JAVA经验谈:尽可能使用堆栈变量
  6. http://www.bianceng.cn/java/j33.htm
  7. 主题:深入了解Java ClassLoader Bytecode  ASM cglib
  8. http://www.iteye.com/topic/98178

分享到:
评论

相关推荐

    TTX-I-E泰坦科技通信电源规约详解

    《TTX-I-E泰坦科技通信电源规约详解》 通信电源设备的集中监控是现代通信局(站)管理中的重要环节,TTX-I-E监控模块后台通讯协议在此领域扮演着核心角色。该协议遵循邮电部的标准,旨在规范通信电源设备的设计制造...

    珠海港吞吐量发展水平预测报告

    随着珠三角一体化进程的推进,珠海作为连接内地与港澳的重要通道,其港口吞吐量将受益于区域内的产业转移和消费市场的扩大。 2. 全球经济:国际贸易环境的变化,如国际贸易摩擦、全球经济周期波动等,会直接影响到...

    广东省珠海市2019版高一下学期地理期末考试试卷(I)卷.pdf

    广东省珠海市2019版高一下学期地理期末考试试卷(I)卷.pdf

    广东省珠海市2021版八年级下学期数学期中考试试卷(I)卷.pdf

    广东省珠海市2021版八年级下学期数学期中考试试卷(I)卷.pdf

    广东省珠海市2020年(春秋版)高一下学期地理期末考试试卷(I)卷.pdf

    广东省珠海市2020年(春秋版)高一下学期地理期末考试试卷(I)卷.pdf

    广东省珠海市2020年(春秋版)高一上学期语文期中考试试卷(I)卷.pdf

    广东省珠海市2020年(春秋版)高一上学期语文期中考试试卷(I)卷.pdf

    希码健康商业计划书:2i眼健康服务_医疗健康商业计划书.pdf

    2i实体医院——珠海康德莱医疗产业园和OH@2i(Own hospital @ 2i)是2i线下服务的重要组成部分,它们将线上服务与线下医疗资源相结合,提供全方位的眼健康服务。 综上所述,希码健康科技的2i眼健康服务项目是一个...

    videojet170i培训教材第3版

    《videojet170i培训教材第3版》是一份详尽的专业培训资料,由珠海伟迪捷电子有限公司提供,旨在深入讲解Videojet170i喷码机的系统结构、工作原理、操作方法以及维护保养等内容。以下是对该教材核心知识点的详细解读...

    珠海智融SW3518,SW3518S原厂规格书PDF

    【珠海智融SW3518,SW3518S原厂规格书PDF】介绍了一款由珠海智融科技有限公司开发的高级多快充协议双口充电芯片——SW3518。这款芯片专为支持PD(Power Delivery)和其他多种快充协议的设备设计,适用于车充、适配器...

    珠海炬力笔试题

    下面将详细介绍与珠海炬力相关的IT技术背景、笔试题可能涵盖的关键知识点等内容。 ### 一、珠海炬力公司简介 珠海炬力集成电路设计有限公司成立于2004年,是一家专注于多媒体系统芯片的研发、设计与销售的企业。...

    珠海炬力将推音乐手机芯片 类似iPhone解决方案

    珠海炬力与新兴数字娱乐平台乐乐星球网的合作,更进一步体现了其在娱乐产业链整合上的战略决心。乐乐星球网作为数字娱乐的新星,与珠海炬力的合作无疑将为双方带来新的增长点。乐乐星球网总经理夏其珂认为,通过整合...

    吉林大学珠海学院C++课程PPT

    《吉林大学珠海学院C++课程PPT》是一个包含多个章节的C++教学资源集合,旨在系统地介绍C++编程语言的基础知识和高级特性。通过这些PPT,学习者可以逐步掌握C++的核心概念,包括数据类型、流程控制、函数、数组、...

    D1-H_Linux_I2S_开发指南1

    这份指南由珠海全志科技股份有限公司编撰,旨在加速开发者在该平台上的音频模块开发进程。 1. **文档简介** 该文档主要介绍了I2S/PCM音频模块的使用方法,包括功能规格、源码结构、配置选项以及如何启用和使用这些...

    uCOS-IIModem_example.zip_ucos_ucos i2c_ucos modem_ucos 驱动_zlggui

    这个名为"uCOS-IIModem_example.zip"的压缩包文件显然包含了与μCOS-II相关的示例代码和中间件,主要用于实现MODEM接口、I2C总线以及SPI总线模块的驱动开发,并且结合了ZLGGUI(可能是指珠海炬力的图形用户界面库)...

    Gainscha佳博DT-92I说明书.pdf

    根据佳博珠海楷仕电子科技有限公司的保修政策,DT-92I提供一定期限的保修服务,涵盖非人为因素导致的故障。请妥善保存购机凭证,以便在需要时享受保修服务。 10. 产品附录: 手册中的附录详细介绍了DT-92I的网络ADB...

    房地产市场报告-珠海2019年11月房地产市场月报——中原地产.pdf

    库存与去化:11月末,珠海市住宅库存量为272.17万平方米。以近6个月的去化速度计算,预计库存去化周期为9.44个月,这意味着市场的供求关系相对平衡。\n\n报告还包含了对全国房地产宏观市场的概述,以及对珠海房地产...

    Sunlike+ERP+收付款操作手册

    SUNLIKE ERP 是一个集成化的计算机系统管理软件,参照美国生产与库存控制协会(API CS)颁布的 MRPI I 标准,同时吸收现代营销管理、现代物流管理、生产管理、准时制生产(JIT)、物料管理、全面质量管理、财务管理...

    广东省珠海市艺术高级中学2020-2021学年高二下学期期中考试数学试题 Word版含答案.docx

    这篇文档是广东省珠海市艺术高级中学2020-2021学年高二下学期期中考试的数学试题,包含Word版本的试卷及答案。试题内容涉及到多个数学知识点,包括复数、导数、概率、组合数学、函数性质、数列、极限以及几何问题等...

    Sunlike+ERP+托外加工操作手册

    * Sunlike ERP 托外加工是一个集成化的计算机系统管理软件,参照美国生产与库存控制协会(API CS)颁布的 MRPI I 标准。 * 本系统结合企业自身特点,以企业运作过程中的信息流、资金流和物流为核心进行系统结构设计...

    珠海市软件产业发展情况ppt.ZIP

    为满足软件产业的人才需求,珠海市大力发展高等教育和职业教育,与多所高校共建软件工程专业,实施校企合作,培养具有实战经验的软件人才。此外,还有专门的软件人才培训基地,为企业输送专业技术人才。 五、政策...

Global site tag (gtag.js) - Google Analytics