循环中使用 i++ 和 ++i 哪个更好

本文探讨了在循环中使用i++和++i的区别,指出尽管它们在一般情况下输出相同,但++i在性能上稍优,因为它避免了不必要的数据备份。通过代码示例和字节码分析,强调了在大规模访问时,++i的效率优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环中使用 i++ 和 ++i 哪个更好

先说结论:

循环中使用 i++ 更好!

为什么呢?

我们写个代码做个比较:

两个不一样的for

/**
 * test i++ and ++i
 */
public class ForTest {
    public static void main(String[] args) {
        System.out.print("for i++ : ");

        // i++
        for (int i = 1; i <= 3; i++) {
            System.out.print(i + " ");
        }

        System.out.println();

        System.out.print("for ++i : ");

        // ++i
        for (int i = 1; i <= 3; ++i) {
            System.out.print(i + " ");
        }
    }
}

输入结果:
在这里插入图片描述
其实在这里它的结果是完全一样的
但是不一样的地方是
它的执行方式
我们看他的字节码文件:

在这里插入图片描述
看仔细了是不是 两个for的字节码编译之后是一模一样的。

其实经过编译之后,底层帮你把 i++ 改成了 ++i

那我们再写一个输出看看:

/**
 * 2
 */
public class ForTest_2 {
    public static void main(String[] args) {
        int i = 1;
        i = i++;
        System.out.println(i);

        i = ++i;
        System.out.println(i);
    }
}

输出肯定是 预想中的 1 换行 2

看他编译后的文件:
在这里插入图片描述

但是如果真实执行 i++ 的话
其实是经历了 四个步骤

  1. 先把 i 备份一遍
  2. 再执行 ++ 操作,这就需要再备份一遍并且 +1
  3. 然后 把 +1 之后的值赋值给 原本的 i
  4. 而后,再把之前的备份出来的 i 赋值给 原本的 i

而 执行 ++i 的话 只有三步

  1. 把 i 备份一遍
  2. 执行 ++ 操作
  3. 把增加之后的结果赋值回去

两者相对比:

因为少了一次备份,所以 ++i 的性能比 i++ 的要快

当然,这里说的是对于 i 自己本身,如果用于赋值的话,这两者肯定是有区别的

所以在 for 循环中,还是建议使用 ++i 更合适

如果真的要执行 i++ 的时候,这一点点的提升,在大量访问的时候,还是能体现出一点速度区别的。

感谢阅览,有误请指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值