之前的文章我們介紹了 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 */