博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之戳中痛点 - (4)i++ 和 ++i 探究原理
阅读量:7286 次
发布时间:2019-06-30

本文共 1152 字,大约阅读时间需要 3 分钟。

先看一个例子:

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++要增加一个副本,无疑是要多耗内存,当然效率要低一点,当然只是一丢丢罢了,根本不会对程序运行有明显的影响。

我看过一篇博客,作者的主旨是两者的效率一样,地址 

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

 

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

你可能感兴趣的文章
haproxy配置详解以及动静分离的实现
查看>>
1.2 Zookeeper伪集群安装
查看>>
查看客户端域策略应用结果
查看>>
美团外卖Android平台化的复用实践
查看>>
美团即时物流的分布式系统架构设计
查看>>
流行语折射科技新活力
查看>>
Zabbix高级应用二、监控磁盘阵列、Exchange队列、DAG
查看>>
Ubuntu16.04LTS上搭建Sentry
查看>>
oracle查看表空间大小及表数量
查看>>
js 常用提示 console.log & console.info
查看>>
php stdClass 转数组
查看>>
优化NGINX的25种手段
查看>>
svn安装
查看>>
动态容器 数组 api
查看>>
抽取IPA包里的所有图片,包括.car压缩包中的文件
查看>>
DFS lock handle等待事件
查看>>
PowerDesigner 反转Java代码生成类图
查看>>
iOS 分割线设置
查看>>
MyBatis insert 返回主键的方法
查看>>
分布式文件系统FastDFS原理介绍
查看>>