先看一个例子:

package com.test;public class AutoIncrement {public static void main(String[] args) {int a=7;System.out.println(++a);System.out.println(a);int b=7;System.out.println(b++);System.out.println(b);
}
}

结果也如预期的一样:

是不是回忆起大学老师讲的规则:自增有两种方式,分别是i++和++i;i++表示先赋值后加1;++i表示先加1再赋值;

那还有啥好讲的?(**上面的规则是片面的**)

那下来咱们看一个例子:

package com.test;public class AutoIncrement {public static void main(String[] args) {int c = 0;for(int i=0;i<10;i++){c = c++;}System.out.println(c);}
}    

最后结果是多少?答案等于10?我可以肯定的告诉你错了,答案是0,这是为什么?

下面咱们讲一下Java是怎么样处理自增的:
i++ 和 ++i原理

i++ 即后加加,原理是:先自增,然后返回自增之前的值

++i 即前加加,原理是:先自增,然后返回自增后的值

重点:这是一般人所不知道的,记住:不论是前++还是后++,都有个共同点是先自增

1) ++i 原理,等价于

    i = i+1;
    return i;
2) i++ 原理,用代码分析表示如下:
    int temp = i;
    i = i + 1;
    return temp;
    这3句代表就是上面所说的那样:i++是先自增,然后返回自增之前的值;

PS:不同语言对自增的处理不太一样: 在C++中,“count=count++”与“count++”等价;在Java,PHP中处理方式如上述解析;不同语言,自己可以测试一下

PS:关于执行效率的认识:

i++:取出i,复制i,增加i,返回副本;
++i:取出i,增加i,返回i;
i++要增加一个副本,无疑是要多耗内存,当然效率要低一点,当然只是一丢丢罢了,根本不会对程序运行有明显的影响。

我看过一篇博客,作者的主旨是两者的效率一样,地址 http://www.cnblogs.com/anrainie/p/6610379.html

表示有距离感0.0,个人认为JVM也在不断优化,具体有待研究...

转载于:https://www.cnblogs.com/JsonShare/p/6994776.html

Java之戳中痛点 - (4)i++ 和 ++i 探究原理相关推荐

  1. Java之戳中痛点之 synchronized 深度解析

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Json_wangqiang cnblogs.com/Jso ...

  2. Java之戳中痛点之synchronized 深度解析【云图智联】

    概览: 简介:作用.地位.不控制并发的影响 用法:对象锁和类锁 多线程访问同步方法的7种情况 性质:可重入.不可中断 原理:加解锁原理.可重入原理.可见性原理 缺陷:效率低.不够灵活.无法预判是否成功 ...

  3. Java之戳中痛点 - (5)switch语句break不能忘以及default不同位置的用法

    先看一段代码: public class Test{ public static void main(String[] args){ System.out.println("2 = &quo ...

  4. ERP项目六大困惑,个个戳中痛点!

    对于信息化基础相对薄弱的中国企业来说,ERP的复杂性使得企业在进行ERP选型和实施时面临种种困惑,而超过50%的ERP失败率更让决策者进行ERP投资时举棋不定. 困惑一:成功Vs.失败? 提起ERP, ...

  5. java queryinterface_COM编程中的接口查询QueryInterface的实现原理

    我们都知道,COM组件编程中,QueryInterface实现的接口之间的查询,通过这个接口,我们可以获取该组件中其他的接口.但 是,QueryInterface实现的原理,并不是大家都很清楚,也没有 ...

  6. 《都挺好》:苏明哲的老婆吴非这句话戳中所有大龄程序员的痛点!

    本文来自:头条搜索家 <都挺好>这部剧确实很好看,很现实,一个是家庭子女关系该如何处理,一个是如何赡养老人的问题该如何解决,再一个就是老人的晚年生活如何有质量.有尊严的度过,但其实还有一个 ...

  7. 戳中你的痛点,移动互联网的痛点思维

    最近经常听到一些业内人士,专家说要寻求用户的痛点,利用痛点来做营销.那么听了这么多,痛点思维究竟是什么思维?在移动互联网时代,这样的痛点思维是否可以站得住脚?如何来寻求痛点?今天作者根据仅有的&quo ...

  8. 数据告诉你,剧版浪姐-《三十而已》凭什么这么戳中观众的心

    image CDA数据分析师 出品 作者:Mika 数据:<typo id="typo-29" data-origin="真达" ignoretag=&q ...

  9. java面试题(中)

    67.分布式理论懂多少,说一下(CAP,Base,paxos) CAP理论:一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:P ...

最新文章

  1. 第32章:MongoDB-索引--Capped固定集合
  2. Netlog 的数据库及 LAMP 架构
  3. linux远程代码执行漏洞,Bash远程任意代码执行安全漏洞(最严重漏洞)
  4. oracle 存储过程字符替换,Oracle存储过程常用字符串处理函数整理
  5. bat批量修改及替换文件内容
  6. linux 提示libaio.so.1,解决Mysql报错缺少libaio.so.1
  7. Android中什么是Dex文件
  8. linux怎么安装台式无线网卡,linux下安装无线网卡
  9. 笔记本计算机无法上无线网络,告诉你解决笔记本电脑连不上无线网络
  10. 我的八年硕博士生涯——CMU王赟写在入职Facebook之前
  11. C++加载csb文件
  12. Mac升级系统后,idea中Git无法使用:xcrun: error: invalid active developer path
  13. 实景三维重建大雁云与三青鸟达成战略合作提供自助式实景三维建模全流程服务
  14. leetcode 36. 有效的数独 (将 9 * 9 数独划分成 9 宫格 )
  15. prometheus+grafana监控rabbitmq
  16. php文本框添加表情,仿微信在对话框文字中插入Emoji表情包
  17. Java多线程socket网络协议传输
  18. 深度对比:电子合同与纸质合同到底有哪些差异?
  19. Java实现内网穿透
  20. linux美化桌面,Linux_设置动态壁纸来美化Ubuntu桌面,我们知道你想拥有一个有格调 - phpStudy...

热门文章

  1. 关于swing的一些看法
  2. nginx-0.1.0文件分析3:ngx_send.c
  3. 自己动手做一个小Linux-2
  4. 绝对经典的滑轮新闻显示(javascript+css)实现
  5. 被大众群体吹的神乎其神的Python到底都能干什么
  6. 利用Python绘制萌萌哒的皮卡丘
  7. java中的保留字_Java中的保留字是哪些呢?
  8. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍
  9. java鼠标事件获得键盘值_请问JAVA怎么模拟鼠标和键盘事件[200分]
  10. 整理一下linux系统expand 命令