Java 從入門到進階之路(四)
之前的文章我們介紹了 Java 的運算子和表示式,本章我們來看一下 Java 的迴圈結構。
迴圈是程式設計語言中反覆執行某些程式碼的一種計算機處理過程,是一組相同或相似語句被有規律的重複性進行。
迴圈的要素:
- 迴圈變數的初始化
- 迴圈條件(以迴圈變數為基礎)
- 迴圈變數的改變(向著迴圈的結束進行改變)
Java中有三種主要的迴圈結構:
- while 迴圈
- do…while 迴圈
- for 迴圈
while 迴圈
while是最基本的迴圈,它的結構為:
while(布林表示式){ //迴圈內容 }
只要布林表示式為 true,迴圈就會一直執行下去。
1 public class HelloWorld { 2 public static void main(String[] args) { 3 int i = 0; 4 while (i < 5) { 5 System.out.print(i); // 0 1 2 3 4 6 i++; 7 } 8 } 9 }
do…while 迴圈
對於 while 語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件,也至少執行一次。
do…while 迴圈和 while 迴圈相似,不同的是,do…while 迴圈至少會執行一次。
do {
//程式碼語句 }while(布林表示式);
注意:布林表示式在迴圈體的後面,所以語句塊在檢測布林表示式之前已經執行了。 如果布林表示式的值為 true,則語句塊一直執行,直到布林表示式的值為 false。
1 public class HelloWorld { 2 public static void main(String[] args) { 3 int i = 0; 4 do { 5 System.out.print(i); // 0 1 2 3 4 6 i++; 7 } while (i < 5); 8 } 9 }
for迴圈
雖然所有迴圈結構都可以用 while 或者 do...while表示,但 Java 提供了另一種語句 —— for 迴圈,使一些迴圈結構變得更加簡單。
for迴圈執行的次數是在執行前就確定的。語法格式如下:
for(初始化; 布林表示式; 更新) { //程式碼語句 }
關於 for 迴圈有以下幾點說明:
- 最先執行初始化步驟。可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句。
- 然後,檢測布林表示式的值。如果為 true,迴圈體被執行。如果為false,迴圈終止,開始執行迴圈體後面的語句。
- 執行一次迴圈後,更新迴圈控制變數。
- 再次檢測布林表示式。迴圈執行上面的過程。
1 public class HelloWorld { 2 public static void main(String[] args) { 3 for (int i = 0; i < 5; i++) { 4 System.out.print(i); // 0 1 2 3 4 5 } 6 } 7 }
Java 增強 for 迴圈
Java5 引入了一種主要用於陣列的增強型 for 迴圈。
Java 增強 for 迴圈語法格式如下:
for(宣告語句 : 表示式){ //程式碼句子 }
宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。
表示式:表示式是要訪問的陣列名,或者是返回值為陣列的方法。
1 public class HelloWorld { 2 public static void main(String[] args) { 3 int[] list = {0, 1, 2, 3, 4}; 4 // for (String i : list) { 5 // System.out.print(i); // 編譯錯誤 6 // } 7 for (int i : list) { 8 System.out.print(i); // 0 1 2 3 4 9 } 10 } 11 }
break 關鍵字
break 主要用在迴圈語句或者 switch 語句中,用來跳出整個語句塊。
break 跳出最裡層的迴圈,並且繼續執行該迴圈下面的語句。
public class HelloWorld { public static void main(String[] args) { int[] list = {0, 1, 2, 3, 4}; for (int i : list) { if (i == 2) { break; } System.out.print(i); // 0 1 } } }
continue 關鍵字
continue 適用於任何迴圈控制結構中。作用是讓程式立刻跳轉到下一次迴圈的迭代。
在 for 迴圈中,continue 語句使程式立即跳轉到更新語句。
在 while 或者 do…while 迴圈中,程式立即跳轉到布林表示式的判斷語句。
1 public class HelloWorld { 2 public static void main(String[] args) { 3 int[] list = {0, 1, 2, 3, 4}; 4 for (int i : list) { 5 if (i == 2) { 6 continue; 7 } 8 System.out.print(i); // 0 1 3 4 9 } 10 } 11 }
巢狀迴圈
迴圈中套迴圈,一般多行多列時使用,外層控制行,內層控制列。
執行過程:外層迴圈走一次,內層迴圈走所有次
建議:巢狀層次越少越好(一班最多為2層迴圈),次數再多說明設計有問題。
1 public class HelloWorld { 2 public static void main(String[] args) { 3 // 九九乘法表 4 for (int i = 1; i <= 9; i++) { 5 for (int j = 1; j <= i; j++) { 6 System.out.print(i + "*" + j + "=" + j * i + "\t"); 7 } 8 System.out.print("\n"); 9 } 10 } 11 } 12 /** 13 1*1=1 14 2*1=2 2*2=4 15 3*1=3 3*2=6 3*3=9 16 4*1=4 4*2=8 4*3=12 4*4=16 17 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 18 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 19 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 20 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 21 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 22 */
&n