for循环使用体会
最近在看源码的时候看到了以下代码:
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,省去了对内存的操作的环节,相对而言能够提高性能。
总的来说就是为了提高性能,减少内存的占用。