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循環執行的順序不太了解所以我決定趁這個機會徹底搞清楚。
感謝這個大佬的幫助//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,省去了對記憶體的操作的環節,相對而言能夠提高性能。
總的來說就是為了提高性能,減少記憶體的佔用。