1. 程式人生 > >Java 從入門到進階之路(四)

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