流程控制與陣列—Java基礎學習(二)

qq_38558851發表於2020-11-22

Java基礎

流程控制與陣列

一、流程控制

在這裡插入圖片描述

1.1順序結構

程式從上到下逐行執行,中間沒有任何判斷和跳轉。

1.2分支結構

1.2.1 if條件語句

格式:

if(布林表示式){
    語句或語句塊
}else if(布林表示式){
    語句或語句塊
}else{
    語句或語句塊
}

示例:

    public static void main(String[] args) {
        int grade = 78;
        if (grade < 0) {
            System.out.println("成績輸入不合規,請重新輸入!");
        } else if (grade < 60) {
            System.out.println("不及格");
        } else if (grade >= 60 && grade < 80) {
            System.out.println("良好");
        } else if (80 <= grade && grade <= 100) {
            System.out.println("優秀");
        }
    }

注:

if後面的括號裡面只能是一個邏輯表示式,即表示式返回值只能是Boolean型別。

if 、else if 、else後面只有一行語句時可以省略“{}”,但是為了可讀性一般不要省略。

在if語句中,總是把包含範圍小的條件放在前面處理。如上面程式可以寫為:

    public static void main(String[] args) {
        int grade = 800;
        if (grade < 0 || grade > 100) {
            System.out.println("成績輸入不合規,請重新輸入!");
        } else if (grade >= 80) {
            System.out.println("優秀");
        } else if (grade >= 60) {
            System.out.println("良好");
        } else if (grade < 60) {
            System.out.println("不及格");
        }
    }
1.2.2 switch語句

switch語句由一個控制表示式和多個case組成。switch語句後面的控制表示式資料型別只能是byte,short,char,int (java SE 7開始支援String)和列舉型別,不能是Boolean型別。

語法:

switch(expression){
    case value :
       //語句
       break; //可選
    case value :
       //語句
       break; //可選
    //你可以有任意數量的case語句
    default : //可選
       //語句
}

語法規則:① switch 語句可以擁有多個 case 語句。每個 case 後面跟一個要比較的值和冒號。

② case 語句中的值的資料型別必須與變數的資料型別相同,而且只能是常量或者字面常量。

③ 當變數的值與 case 語句的值相等時,那麼 case 語句之後的語句開始執行,直到 break 語句出現才會跳出 switch 語句。 當遇到 break 語句時,switch 語句終止。程式跳轉到 switch 語句後面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現 break 語句。

④ switch 語句可以包含一個 default 分支,一般是 switch 語句的最後一個分支。default 在沒有 case 語句的值和變數值相等的時候執行。default 不需要 break 語句。

示例:

    public static void main(String[] args) {
        String name = "張三";
        switch (name) {
            case "張三":
                System.out.println("這是張三");
                break;
            case "李四":
                System.out.println("這是李四");
                break;
            default:
                System.out.println("這人我不認識");
        }
    }

1.3迴圈結構

Java中有三種主要的迴圈結構: ①while 迴圈 ②do…while 迴圈 ③for 迴圈

1.3.1 while迴圈

語法格式:

while( 布林表示式 ) {
  //迴圈內容
}

只要布林表示式為 true,迴圈就會一直執行下去。

示例:

    public static void main(String[] args) {
        int i = 1;
        while (i < 10) {
            System.out.println(i + "\n");
            i++;
        }
    }

輸出結果:

1
2
3
4
5
6
7
8
9
1.3.2 do…while 迴圈

語法格式:

do {
       //程式碼語句
}while(布林表示式);

do…while 迴圈和 while 迴圈相似,不同的是,do…while 迴圈至少會執行一次。布林表示式在迴圈體的後面,所以語句塊在檢測布林表示式之前已經執行了。 如果布林表示式的值為 true,則語句塊一直執行,直到布林表示式的值為 false。

示例:

    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println(i + "\n");
            i++;
        } while (i < 10);
    }

輸出結果:

1
2
3
4
5
6
7
8
9
1.3.3 for 迴圈

語法格式:

for(初始化; 布林表示式; 更新) {java
    //程式碼語句
}

for迴圈執行的次數是在執行前就確定的。最先執行初始化步驟。可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句。然後,檢測布林表示式的值。如果為 true,迴圈體被執行。如果為false,迴圈終止,開始執行迴圈體後面的語句。 執行一次迴圈後,更新迴圈控制變數。再次檢測布林表示式。迴圈執行上面的過程。

示例:

    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            System.out.println(i + "\n");
        }
    }

輸出結果:

1
2
3
4
5
6
7
8
9
增強 for 迴圈
for(宣告語句 : 表示式)
{
   //程式碼句子
}

**宣告語句:**宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。

**表示式:**表示式是要訪問的陣列名,或者是返回值為陣列的方法。

    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        for (int x : numbers) {
            System.out.print(x + " ");
        }
        System.out.print("\n");
        String[] names = {"abc", "def", "ghi", "klm"};
        for (String name : names) {
            System.out.print(name + " ");
        }
    }

結果

10 20 30 40 50 
abc def ghi klm 

1.4 控制迴圈結構

break關鍵字

break 主要用在迴圈語句或者 switch 語句中,用來跳出整個語句塊。

break 跳出最裡層的迴圈,並且繼續執行該迴圈下面的語句。

示例:

    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            System.out.println(i + "\n");
            if (i == 3) {
                break;
            }
        }
    }

結果:

1

2

3

continue 關鍵字

continue 適用於任何迴圈控制結構中。作用是讓程式立刻終止本次迴圈跳轉到下一次迴圈的迭代。 在 for 迴圈中,continue 語句使程式立即跳轉到更新語句。在 while 或者 do…while 迴圈中,程式立即跳轉到布林表示式的判斷語句。

示例

    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            if (i == 3) {
                continue;
            }
            System.out.println(i + "\n");
        }
    }

結果:

1
2
4
5
6
7
8
9

二、陣列型別

陣列可用於儲存多個資料,每個陣列元素存放一個資料。再陣列中要求所有的元素有相同的資料型別,即陣列元素的型別是唯一的。

一旦陣列被初始化完成,陣列在記憶體中佔用的空間將被固定下來,因此陣列的長度不能改變。陣列是一種引用型別。

宣告陣列變數

ataType[] arrayRefVar;   // 首選的方法
或
dataType arrayRefVar[];  // 效果相同,但不是首選方法

注:宣告陣列變數的時候不能指定長度。

建立陣列(陣列的初始化)

Java中陣列必先初始化,即為陣列的元素分配記憶體空間,為每個元素賦初值,然後才能使用。

陣列的初始化有以下兩種方式:

①靜態初始化:顯式指定陣列中每個元素的初始值,由系統決定陣列的長度。

dataType[] arrayRefVar = {value0, value1, ..., valuek};

②動態初始化:指定陣列的長度,由系統為陣列元素分配初始值。

dataType[] arrayRefVar = new dataType[arraySize];

示例:

    public static void main(String[] args) {
//        靜態初始化
        int[] intArr;
        intArr = new int[]{1, 2, 3, 4, 5};
        String[] strArr;
        strArr = new String[]{"abc", "def"};
//        動態初始化
        int[] intArr1 = new int[5];
        String[] strArr1 = new String[5];
    }

使用陣列

    public static void main(String[] args) {
//        初始化陣列
//        靜態初始化
        int[] intArr;
        intArr = new int[]{1, 2, 3, 4, 5};
//        動態初始化
        String[] strArr = new String[3];
//        使用陣列
//        給動態初始化陣列賦值
        strArr[0] = "Hello";
        strArr[1] = "word";
        strArr[2] = "java";
//        列印指定陣列元素
        System.out.println("intArr陣列的第一個元素:" + intArr[0]);
        System.out.println("strArr陣列的第一個元素:" + strArr[0]);
//        遍歷陣列列印所有元素
        for (int i = 0; i < strArr.length; i++) {
            System.out.println("strArr1的第" + (i + 1) + "個元素是:" + strArr[i]);
        }
//        計算陣列元素總和
        int total = 0;
        for (int i = 0; i < intArr.length; i++) {
            total += intArr[i];
        }
        System.out.println("陣列intArr總和為:" + total);
    }

結果:

intArr陣列的第一個元素:1
strArr陣列的第一個元素:Hello
strArr1的第1個元素是:Hello
strArr1的第2個元素是:word
strArr1的第3個元素是:java
陣列intArr總和為:15
foreach迴圈(陣列的加強for迴圈)

語法格式:

for(type element: array)
{
    System.out.println(element);
}

示例:

public static void main(String[] args) {
    //        加強for迴圈
        int j = 1;
        for (String str : strArr) {
            System.out.println("strArr陣列的第"+(j++) +"個元素是:"+str);
        }
}

結果:

strArr陣列的第1個元素是:Hello
strArr陣列的第2個元素是:word
strArr陣列的第3個元素是:java

多維陣列

格式如下(以二維陣列為例):

 type[][] typeName = new type[typeLength1][typeLength2]; 

System.out.println(element);
}


示例:

```java
public static void main(String[] args) {
    //        加強for迴圈
        int j = 1;
        for (String str : strArr) {
            System.out.println("strArr陣列的第"+(j++) +"個元素是:"+str);
        }
}

結果:

strArr陣列的第1個元素是:Hello
strArr陣列的第2個元素是:word
strArr陣列的第3個元素是:java

多維陣列

格式如下(以二維陣列為例):

 type[][] typeName = new type[typeLength1][typeLength2]; 

相關文章