for循环中++i和i++的区别

注意!!

在Java中++i 和 i++ 是没有区别的!!! 二者的执行效率是一样的,因为Java编译器会进行编译优化,编译完成之后的代码都会是 ++i

源代码:
在这里插入图片描述
编译后代码:
在这里插入图片描述
下面我们来理解一下为什么Java编辑器会进行这样的优化

1、语法

for (语句1; 语句2; 语句3) {
 
    //代码块......
    
}

语句1: 在循环开始前执行

语句2: 定义运行循环的条件

语句3: 在循环已被执行之后执行(虽然++i和i++结果是一样的,但是性能不一样)

2、区别(重点)

虽然++i 和 i++的结果是一样的,都是在代码块执行完成之后才执行语句3,但是二者的性能却有差别,在大量数据的前提下++i的性能要比i++的性能好,原因:

i++是在使用当前值之后再+1,需要创建一个临时的变量来转存,Java代码我们可以理解为:

int temp=i;i=i+1;

++i是直接+1,省去了对内存操作的环节,相对而言能够提高性能,Java代码我们可以理解为:

i=i+1;

3、总结

我们可以看到,在上面两种情况下,经过Java编译器的优化,保持了语义不变,并通过转换语法的形式提高了代码的运行效率。因此我们可以得出结论:
在for循环中,经过JVM编译优化后,不论是i++还是++i,最终执行的方式都是++i,因此执行效率是相同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shy好好学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值