for循环中,i++和++i有什么区别

在Java中,for循环是很常见的。一般我们写的格式,或者IDE提供的默认模板的格式大都如下:

for (int i = 0;i < 10; i++) {
	// TODO something
}

对局部变量i使用的都是i++,可是最近在很多算法中看到使用了++i。就很是不理解。

首先从for循环执行逻辑上去分析,发现结果从理论上来说,应该是一样的。

但是本着大佬这么做一定有他的理由的原则,我写了个demo。demo很简单,就是两个简单的for循环:

for (int i = 0;i < 10; i++) {
	System.out.println(i);
}
for (int i = 0;i < 10; ++i) {
	System.out.println(i);
}

从输出结果看,的的确确,就是一模一样的从0输出到9。没有任何的区别。那么,为什么呢?于是我就把两个for循环的执行时间输出出来。

  • 100次,i++执行时间1ms,++i执行时间1ms,两者速度一样
  • 1000次,i++执行时间14ms,++i执行时间6ms,++i差不多快了1倍
  • 10000次,i++执行时间90ms,++i执行时间33ms,++i差不多快了2倍

次数越多,时间差距就越明显。那么,为什么++i的执行速度会那么快呢。

原来,因为i++要等到对i的代码执行完毕后才会将值自增1,可是代码执行完毕后i的值就可能会变,所以需要事先计算好自增后的值,将计算结果保存在一个临时变量中,待i执行完该执行的代码后,就把这个临时变量的值赋给i,再销毁临时变量。

++i就不用这么麻烦,它是先对i进行自增操作,再进行其它代码的执行。所以直接将值赋值给i,不需要任何中间变量。

当次数足够大的时候,i++申请内存空间和释放内存的操作的影响就会扩大。

所以,如果面对较多次的循环,优先考虑++i会让程序的性能获得更多的提升哦。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值