求教本課里第一次執(zhí)行的的“i%3”的結(jié)果為啥是“1”,i++不是在他前面嗎?它當時不應該是2嗎?
"自增1"的概念一直有點模糊,求各位大大給講解下下圖和代碼快照的原理是一樣的嗎?我怎么弄不懂代碼快照里的邏輯呢。
public class HelloWorld{
??? public static void main(String[] args) {
?????????? int i = 1;
????????? System.out.println(i);? //此時“i”為1
????????? i++;?????//在此之后再出現(xiàn)的“i”是不是就應該是增1之后的結(jié)果“2”了?
????????? if (i%3!=0){?????????????//此行的“i”是“2”,但是代碼快照里的此處的“i”還是1,為什么呢?
????? System.out.println(i);
????????????? i=i+1;????????????//i=2+1=3
}
???
??? ??System.out.println(i);
}
}
運行結(jié)果為:1??? 2???? 3?? (按此結(jié)果來說,我的分析應該對?。靠墒菫槭裁丛谶@課里就不一樣了呢。
2014-12-30
i++是在for后面的()而不是在{}里。
2015-01-13
針對快照:你首先得知道for的執(zhí)行順序
for(表達式1;表達式2;表達式3)
{ ?
? ? ? ? ? ?表達式4;
}
for執(zhí)行的順序應該是:
第一次(N=1)初始化循。
? ? ?首先執(zhí)行表達式表達式1(一般為初始化語句);再執(zhí)行表達式2(一般為條件判斷語句),判斷表達式1是否符合表達式2的條件;如果符合,則執(zhí)行表達式4,否則,停止執(zhí)行;最后執(zhí)行表達式3。
第N(N>=2)次循環(huán)
? ? ?首先執(zhí)行表達式2,判斷在表達式3上一次執(zhí)行后的結(jié)果是否符合在表達式2要求;如果符合,則繼續(xù)執(zhí)行在表達式4,否則,停止執(zhí)行。最后執(zhí)行在表達式3。如此往復,直至表達式3不滿足在表達式2條件是為止。
針對上圖:
i++;?????//在此之后再出現(xiàn)的“i”是不是就應該是增1之后的結(jié)果“2”了?
此處相當于i=i+1,就是按照執(zhí)行順序就到這兒了
2014-12-30
這是for循環(huán)的一個規(guī)定。建議去百度搜for循環(huán)流程圖,認真看看。
2014-12-29
第一次循環(huán)sum為1
第二次循環(huán)sum為3