java語言中do while迴圈至少執行1次的理解
java語言中基本迴圈結構分為三類:
1.for
2.while
3.do while
一般情況下,同樣的 "初始條件/判斷語句/迴圈體語句/步進語句" 時,執行結果相同,如下:
1. for迴圈:
2. while迴圈:
3. do while迴圈:
以上三種執行結果相同,如下:
但是當判斷語句一次都不滿足時,情況又如何呢?
1. for迴圈:
2. while迴圈
for和while迴圈的結果相同,不輸出任何值:
3. do while迴圈
do while迴圈結果:
總結:
1. 以上三種迴圈結構,當判斷語句值為true的次數大於等於1次時,程式執行次數及結果完全相同;
2. 當判斷語句值為true的次數為0時,for和while迴圈的執行次數為0,即不執行. 但是do while迴圈會在未經判斷語句判斷之前,先執行唯一的1次;
關於do while的理解:
這時候會有人問:為什麼判斷語句至少1次為ture時,相同情況下三種迴圈結構執行次數相同. 但一次都不為true時,do while卻可以執行唯一的1次呢?
實際原理是:for和while迴圈,從第1次迴圈開始,即判斷是否可以執行迴圈體.
而do while迴圈是不對第1次迴圈進行判斷的,直接執行第1次後,開始判斷是否可以執行"步進"後的第2次,並不是執行1次後,再開始判斷第1次是否合理!
若三種迴圈均執行3次,那麼:for和while判斷3次執行3次, do while是執行1次,判斷第2次和第3次並再執行第2/3次;
若三種迴圈一次都不滿足判斷語句:for和while判斷第1次時不滿足,便不執行. 但do while則是不判斷,執行一次迴圈體,再判斷步進之後的值是否滿足第2次執行條件,不滿足則不執行第2次,但第1次已無腦執行;
很多書籍及視訊教程中均講解為:因為有do 所以至少執行1次,實則不清不楚,容易混淆,望大家周知!