易混淆點驗證
阿新 • • 發佈:2018-12-17
1. 短路
規則:
邏輯與&&以及邏輯或||會產生短路現象:
若&&前表示式為假, 則程式不會檢查並執行&&後的表示式, 因為邏輯與左右有一假則結果必假
若||前表示式為真, 則程式不會檢查執行||前的表示式, 因為邏輯或左右只需一真則結果必真
驗證:
int a=1;
System.out.println(a<0&&a/0==0?"程式崩潰":"不會檢查執行a/0");
結果:
2. 自增規則
"++" "--"
規則:
前置的自增 自減運算子會先將變數的值加一或者減一, 再讓該變數參與表示式的運算
後置的自增 自減運算子會先讓變數參與表示式的運算,再將該變數的值加一或者減一
b=a++; → b=a; a=a+1;
b=++a; → a=a+1; b=a;
驗證:
int a=1;
int b=(a++)+(++a);
System.out.println("b="+b+"\na="+a);
結果:
分析:
先執行(++a), 此時a=2; 再執行b=a+(a), 則b=4; 再執行(a++), 此時a=3;
3. 驗證continue執行
規則:
執行continue之後, 將跳過本次迴圈結束前的語句, 回到迴圈的條件測試部分, 重新開始執行迴圈
對於for迴圈中執行continue, 將立即執行迴圈的第三表達式, 即增量部分, 再進行條件測試
對於while或者do...while迴圈, 則直接開始下一次迴圈(包括條件測試部分)
驗證:
for(int i=1;i<=5;i++) {
System.out.println(i);
if(i==3)
continue;
System.out.println("mark");
}
結果:
分析:
滿足條件i==3後, continue跳過迴圈後面的"mark"顯示語句, 但i仍舊執行自增, 表示continue不會跳過for迴圈的第三個表示式