參考下圖說明
「Initialization 的區塊只能寫些 i=0,j=0 之類的設定初始值
的敍述」
int i = 0;
for(System.out.println("kk");i<5;i++){
System.out.println("kk");
}
但是我如果是這樣寫就可以,這樣應該也沒有初始化什麼東西吧。
scope的問題,你這樣做在迴圈結束後i還是會存在,而且值會變成5.
相反你寫在for迴圈的 statement 內, i 就只存在 for 的 block 中。
題外話,而且你這樣應該會印6次,assign i 時 i 也不會是小於5,跟你想表達的應該不一樣,重點是i會污染到你的local scope, 除非這是你的本意,但看起來應該不是,也不會有人這樣寫
但是我如果是這樣寫就可以,這樣應該也沒有初始化什麼東西吧。
可以
所以 initialization 那段可以修改成
1.兩個(含)以上:「設定初值」敍述(int i=0,j=0)
2.一個敍述:任意敍述
for(初始化;條件式;反覆運算器)
初始化代表for內整個程式區塊狀態初始化,例如。
int i = 0;
i = 100;
for(i = 0; ;);
當你想要重複使用i這個變數,你可以將i的初始化參數放在for第一項。
for其實每個參數都並非必要輸入,例如。
for(;;);
該寫法約等於while(true);
基本上你也可以將初始化邏輯都寫在for上文,將跳脫判斷的條件式以及反覆運算器的邏輯寫在for程式區塊內,但這樣的寫法基本上等於寫while(true)迴圈。
int i = 0;
while(true)
{
if(i>=5) break;
else System.out.println("kk");
i++;
}