最近在看源码的时候看到了以下代码:

        Class[] var2 = componentClasses;
        int var3 = componentClasses.length;

        for(int var4 = 0; var4 < var3; ++var4) {
            Class<?> componentClass = var2[var4];
            this.registerBean(componentClass);
        }

发现源码里面用的条件3是:++var4这种类型的条件。当时就感觉很奇怪,应为我一般都是用i++。

虽然我是知道i++与++i的区别的,但我发现我对for循环执行的顺序不太了解所以我决定趁这个机会彻底搞清楚。
感谢这个大佬的帮助https://www.cnblogs.com/Paul-Yellow/p/10900475.html
首先for循环的执行顺序:

      for(代码1,代码2,代码3){
         循环内容;
      }

      执行顺序:代码1 → 代码2 → 循环内容 → 代码3;

由此可得不管代码3不管用i++还是++i对循环内容的影响都是一样的。但是为什么源码不用i++而是选择了++i呢?

原来i++由于是在使用当前值之后再+1,所以需要一个临时的变量来转存。
而++i则是在直接+1,省去了对内存的操作的环节,相对而言能够提高性能。

总的来说就是为了提高性能,减少内存的占用。

版权声明:本文为ydmysm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ydmysm/p/study_in_java_1029.html