9.Java流程控制

轉載請保留原文鏈接: http://dashidan.com/article/java/basic/9.html

9.Java流程控制

流程控制語句是編程語言中的核心之一,可以分爲`分支語句`(if, else),`跳轉語句`(switch)和`循環語句`(for, while).

① 分支語句

ifelse屬於分支語句,意思是根據條件執行語句. if-else 流程控制中,只會執行判斷條件爲真方法體的代碼,不滿足條件的不執行.

1.最簡單的流程控制if, else

如果if括號中的條件爲真(true),則執行if對應大括號內的語句. 如果if括號中的條件爲假(false),則執行else對應大括號內的語句.

int a = 0;int b = 1;if(a > b){
    System.out.println(a);} else {
    System.out.println(b);}

2.if-else if-else

  • 如果if括號中的條件爲真(true),則執行if對應大括號內的語句.

  • 如果if括號中的條件爲假(false),則順次往下判斷else if對應大括號內的條件是否爲真.

  • 如果條件爲真,則執行大括號對應的語句.

  • 如果條件爲假,則繼續向下判斷.

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 */public class Demo1 {
    public static void main(String[] args) {
        int a = 0;
        int b = 1;
        if (a > b) {
            System.out.println("a > b");
        } else if (a == b) {
            System.out.println("a == b");
        } else {
            System.out.println("a < b");
        }
    }}

輸出:

a < b

② 跳轉語句

switch是一種條件控制語句, 由casebreakdefault(可省略)組成.

switch根據一個傳入的參數,從case:的數據,找到和傳入的參數相同的值.執行對應的case部分的代碼,到break結束.結束switch語句. 如果沒有滿足的case情況.執行default對應的語句.結束switch語句.

代碼示例:

switch (var) {
    case 1:
        System.out.println(1);
        break;
    case 2:
        System.out.println(2);
        break;
    case 3:
        System.out.println(3);
        break;
    default:
        System.out.println("default : " + var);
        break;}

調用方式

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 * 基礎switch case
 */public class Demo2 {

    public static void main(String[] args) {
        int num = 2;
        baseSwitch(num);
    }

    /**
     * switch case基本模型
     *
     * @param var 傳入的參數,通過該參數找到case對應的值,執行對應的代碼.
     */
    public static void baseSwitch(int var) {
        switch (var) {
            case 1:
                System.out.println(1);
                break;
            case 2:
                System.out.println(2);
                break;
            case 3:
                System.out.println(3);
                break;
            default:
                System.out.println("default : " + var);
                break;
        }
        System.out.println("switch over.");
    }}

輸出:

2
switch over.

`case`沒有`break`會怎樣?

case如果沒有break就會繼續往下執行,不中斷switch語句,直到遇到`break`,或者switch結尾.

示例代碼:

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 * 測試case沒有break的情況
 */public class Demo3 {

    public static void main(String[] args) {
        int num = 2;
        testSwitchWithoutBreak(num);
    }

    /**
     * 測試case沒有break的情況
     *
     * @param var 傳入的case參數
     */
    public static void testSwitchWithoutBreak(int var) {
        switch (var) {
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
            case 3:
                System.out.println(3);
                break;
            default:
                System.out.println(4);
                break;
        }
        System.out.println("switch over.");
    }}

輸出:

2
3
switch over.


網上很多文章說`switch`只支持整數型和字符(`char`)型.

那是以前了. JDK7.0開始`switch case`已經支持字符串類型了.

附帶真相的代碼:

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 * switch case參數爲字符串
 */public class Demo4 {

    public static void main(String[] args) {
        String str = "a";
        testSwitchCaseString(str);
    }

    /**
     * 測試switch case參數爲字符串
     *
     * @param var 傳入的case字符串
     */
    public static void testSwitchCaseString(String var) {
        switch (var) {
            case "a":
                System.out.println("a");
                break;
            case "b":
                System.out.println("b");
                break;
            case "c":
                System.out.println("c");
                break;
            default:
                System.out.println("default");
                break;
        }
        System.out.println("switch over.");
    }}

輸出:

a
switch over.

③ 循環語句

循環就是同樣的規則重複執行. Java基本循環控制有3種: forwhiledo...while.

1.for循環基本表達方式:

for(定義變量及初始值; 循環繼續執行條件; 循環每執行一次變量的變化){
    //循環體
}

示例代碼:

for (int i = 0; i < 3; i++) {
    System.out.println("i: " + i);}

執行步驟:

  1. 第一步設定一個整型變量i,並設定初始值i = 0.

  2. 第二步判斷循環繼續執行條件i<3,是否爲true,如果爲true,繼續第三步,如果爲false`則結束循環.

  3. 第二步滿足i<3(true)時,執行循環體(打印出變量i的值).

  4. 第三步執行完循環體後,執行循環每執行一次變量的變化,爲(i++),這時i的值加1,從0變爲1.

  5. 開始循環執行第二步的判斷,直到循環結束.

2.while循環基本表達方式:

先判斷是否結束循環,再執行循環體.

while(循環繼續執行條件){
    //循環體
}

示例代碼:

int i = 0;while (i < 3) {
    System.out.println("i: " + i);
    i++;}

執行步驟:

  1. 第一步判斷循環繼續執行條件i<3,是否爲true,如果爲true,繼續第二步,如果爲false`則結束循環.

  2. 第二步執行循環體(打印出變量i的值, i值加1).

  3. 開始循環執行第二步的判斷,直到循環結束.

3.do...while循環語句

先執行循環體,再判斷是否結束循環,基本表達方式:

do{
    //循環體
} while(循環繼續執行條件);

示例代碼:

int i = 0;do {
    System.out.println("i: " + i);
    i++;} while (i < 3);

執行步驟:

  1. 第一步執行循環體(打印出變量i的值, i值加1).

  2. 第二步判斷循環繼續執行條件i<3,是否爲true,如果爲true,繼續第二步,如果爲false`則結束循環.

  3. 開始循環執行第一步的語句,直到循環結束.

4.continue關鍵字

在循環體中的continue是從continue處停止當前的邏輯執行, 並且繼續進入下一次循環.

  • for循環continue示例代碼:

for (int i = 0; i < 3; i++) {
    if (i == 1) {
        continue;
    }
    System.out.println("i: " + i);}
  • while循環continue示例代碼:

int i = 0;while (i < 3) {
    if (i == 1) {
        continue;
    }
    System.out.println("i: " + i);
    i++;}

在`for`循環和`while`循環中,`continue`語句作用一樣.當`i==1`時,執行了`continue`語句,跳過了後續的語句,所以沒有輸出`i: 1`.

5.break關鍵字

在循環體中的break結束當前的循環.

  • for循環示例代碼:

for (int i = 0; i < 3; i++) {
    if (i == 1) {
        break;
    }
    System.out.println("i: " + i);}
  • while循環示例代碼:

int i = 0;while(i < 3){
    if(i == 1){
        break;
    }
    System.out.println("i: " + i);
    i++;}

6.return關鍵字

return語句可以使其從當前方法中退出.返回到調用該方法的語句處.繼續程序的執行. 返回語句有兩種格式:無返回值和有返回值.

  • return有返回值, 返回一個值給調用該方法的語句.返回值的數據類型必須與方法聲明中的返回值類型一致.

  • return無返回值, 當方法說明中用void聲明無返回值時,不返回任何值.

return返回值

`return`語句通常用在一個方法體的最後,退出該方法並返回一個值. 單獨的`return`語句用在一個方法體的中間時,會產生編譯錯誤,因這會導致後續語句執行不到. 可以通過把`return`語句嵌入某些語句(如:`if…else`)來使程序在未執行完方法中的所有語句時退出.

示例代碼:

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 * return 語句
 */public class Demo6 {
    public static void main(String[] args) {
        /** 執行無返回值的方法*/
        testReturn(1);
        int b = testReturnInt(2, 3);
        System.out.println("執行有返回值的方法: " + b);

    }

    public static void testReturn(int value) {
        System.out.println("執行無返回值的方法: " + value);
    }

    public static int testReturnInt(int p0, int p1) {
        return p0 + p1;
    }}

輸出:

執行無返回值的方法: 1
執行有返回值的方法: 5

7. 死循環

當程序進入循環中,如果符合繼續執行循環的條件一直爲true, 程序就會無限執行這個循環體的代碼, 導致無法執行下一句語句,這種情況就叫死循環. 開發過程中需要注意這點. 最簡單的是循環的例子是

while(true){
    ...
}

示例代碼

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 * 死循環
 */public class Demo7 {
    public static void main(String[] args) {
        while (true) {
            System.out.println("死循環");
        }
    }}

輸出

死循環
死循環
死循環
死循環
死循環
死循環
死循環
...

④ 示例代碼

package com.dashidan.lesson8;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇:8. Java流程控制
 * Java循環語句
 */public class Demo5 {
    public static void main(String[] args) {
        /** for循環基本表達方式*/
        System.out.println("for循環基本表達方式");
        for (int i = 0; i < 3; i++) {
            System.out.println("i: " + i);
        }
        System.out.println("while循環基本表達方式");
        /** while循環基本表達方式*/
        int i = 0;
        while (i < 3) {
            System.out.println("i: " + i);
            i++;
        }
        System.out.println("do...while循環基本表達方式");
        /** do...while循環基本表達方式*/
        i = 0;
        do {
            System.out.println("i: " + i);
            i++;
        } while (i < 3);
        System.out.println("continue 在for循環中");
        /** continue 在for循環中*/
        for (i = 0; i < 3; i++) {
            if (i == 1) {
                continue;
            }
            System.out.println("i: " + i);
        }

        System.out.println("continue 在while循環中");
        i = 0;
        while (i < 3) {
            i++;
            if (i == 1) {
                continue;
            }
            System.out.println("i: " + i);
        }

        /**
         * 在`for`循環和`while`循環中,`break`語句作用一樣.
         * 當`i==1`時,執行了`break`語句,結束了循環.所以只有`i: 0`的輸出.
         */
        System.out.println("break在for循環中");
        for (i = 0; i < 3; i++) {
            if (i == 1) {
                break;
            }
            System.out.println("i: " + i);
        }
        System.out.println("break在while循環中");
        i = 0;
        while (i < 3) {
            if (i == 1) {
                break;
            }
            System.out.println("i: " + i);
            i++;
        }
    }}

輸出:

for循環基本表達方式
i: 0
i: 1
i: 2
while循環基本表達方式
i: 0
i: 1
i: 2
do...while循環基本表達方式
i: 0
i: 1
i: 2
continue 在for循環中
i: 0
i: 2
continue 在while循環中
i: 2
i: 3
break在for循環中
i: 0
break在while循環中
i: 0
⑤ 相關文章

 Java從入門到精通目錄


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章