循環語句除了for循環之外還有while和do..while,接下來我們先來看一下while循環,首先學習while循環的語法結構,如下圖所示:
圖6-29:while循環語法結構
通過上圖可以看出while循環的語法結構非常簡單,它的執行順序以及原理是這樣的,先判斷布爾表達式的結果,如果是true,則執行循環體,循環體結束之后,再次判斷布爾表達式的結果,如果是true,再執行循環體,循環體結束之后,再判斷布爾表達式的結果,直到結果為false的時候,while循環結束。如果起初第一次判斷布爾表達式結果的時候就是false,那么while循環體執行次數就為0了。它的執行順序以及原理也可以參見下圖:
圖6-30:while循環執行順序以及原理
通過while循環的執行原理可以得出while循環的循環體執行次數可能是0次,也可能是N次。那么要想使用while循環實現一個死循環,代碼應該怎么寫呢?
while(true){
System.out.println("死循環");
}
運行結果就不再給大家展示了,要使用while實現一個死循環是非常簡單的,讓判斷條件一直為true就可以了。那么使用while循環實現輸出1~10應該怎么做呢?
int i = 0;
while(i < 10){
i++;
System.out.println("i = " + i);
}
運行結果如下圖所示:
圖6-31:使用while循環輸出1~10
其實使用while循環輸出1~10不止有以上這一種方式,還有其他方式,例如:
int j = 1;
while(j <= 10){
System.out.println("j = " + j);
j++;
}
運行結果如下圖所示:
圖6-32:使用while循環輸出1~10
當然,大家還可以想想有沒有其它的寫法,可以自己寫一寫,例如:
int i = 0;
while(i < 10){
System.out.println("i = " + (++i));
}
再如:
int j = 1;
while(j <= 10){
System.out.println("j = " + j++);
}
使用while循環計算1~100所有偶數的和,應該怎么做呢?
int sum = 0;
int i = 0;
while(i <= 100){
if(i % 2 == 0){
sum += i;
}
i++;
}
System.out.println("sum = " + sum);
sum = 0;
int j = 0;
while(j <= 100){
sum += j;
j += 2;
}
System.out.println("sum = " + sum);
運行結果如下圖所示:
圖6-33:while循環計算1~100所有偶數和
實際上while循環可以看做是for循環的另一種變形寫法,本質上是一樣的,執行效率上也是一樣的,硬要說它們有什么不同的話,首先while循環語法結構比for更簡單,for循環的計數器比while更清楚一些,另外for循環的計數器對應的變量可以在for循環結束之后就釋放掉,但是while循環的計數器對應的變量聲明在while循環外面,擴大了該變量的作用域。總之,不管是for還是while,大家都必須掌握,因為這兩個循環使用最多。