国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java中控制流程語(yǔ)句的深入講解

Java中控制流程語(yǔ)句的深入講解

2022-02-27 15:08初念初戀 Java教程

流程控制語(yǔ)句顧名思義就是控制程序走向的語(yǔ)句,其中包括條件語(yǔ)句,分支語(yǔ)句和循環(huán)語(yǔ)句,這篇文章主要給大家介紹了關(guān)于Java中控制流程語(yǔ)句的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

流程控制語(yǔ)句是用來(lái)控制程序中各語(yǔ)句執(zhí)行順序的語(yǔ)句,可以把語(yǔ)句組合成能完成一定功能的小邏輯模塊。

控制語(yǔ)句分為三類(lèi):順序、選擇和循環(huán)。

順序結(jié)構(gòu):代表“先執(zhí)行a,再執(zhí)行b”的邏輯。

選擇結(jié)構(gòu):代表“如果…,則…”的邏輯。

循環(huán)結(jié)構(gòu):代表“如果…,則重復(fù)執(zhí)行…”的邏輯。

實(shí)際上,任何軟件和程序,小到一個(gè)練習(xí),大到一個(gè)操作系統(tǒng),本質(zhì)上都是由“變量、選擇語(yǔ)句、循環(huán)語(yǔ)句”組成。
這三種基本邏輯結(jié)構(gòu)是相互支撐的,它們共同構(gòu)成了算法的基本結(jié)構(gòu),無(wú)論怎樣復(fù)雜的邏輯結(jié)構(gòu),都可以通過(guò)它們來(lái)表達(dá)。

if-then

它告訴你要只有 if 后面是 true 時(shí)才執(zhí)行特定的代碼。

?
1
2
3
4
5
6
7
void applyBrakes() {
    // the "if" clause: bicycle must be moving
    if (isMoving){
        // the "then" clause: decrease current speed
        currentSpeed--;
    }
}

如果 if 后面是 false, 則跳到 if-then 語(yǔ)句后面。語(yǔ)句可以省略中括號(hào),但在編碼規(guī)范里面不推薦使用,如:

?
1
2
3
4
5
void applyBrakes() {
    // same as above, but without braces
    if (isMoving)
        currentSpeed--;
}

if-then-else

該語(yǔ)句是在 if 后面是 false 時(shí),提供了第二個(gè)執(zhí)行路徑。

?
1
2
3
4
5
6
7
void applyBrakes() {
    if (isMoving) {
        currentSpeed--;
    } else {
        System.err.println("The bicycle has already stopped!");
    }
}

下面是一個(gè)完整的例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class IfElseDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int testscore = 76;
        char grade;
 
        if (testscore >= 90) {
            grade = 'A';
        } else if (testscore >= 80) {
            grade = 'B';
        } else if (testscore >= 70) {
            grade = 'C';
        } else if (testscore >= 60) {
            grade = 'D';
        } else {
            grade = 'F';
        }
        System.out.println("Grade = " + grade);
    }
}

輸出為:Grade = C

switch

switch 語(yǔ)句可以有許多可能的執(zhí)行路徑。可以使用 byte, short, char, 和 int 基本數(shù)據(jù)類(lèi)型,也可以是枚舉類(lèi)型(enumerated types)、String 以及少量的原始類(lèi)型的包裝類(lèi) Character, Byte, Short, 和 Integer。

下面是一個(gè) SwitchDemo 例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class SwitchDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int month = 8;
        String monthString;
        switch (month) {
        case 1:
            monthString = "January";
            break;
        case 2:
            monthString = "February";
            break;
        case 3:
            monthString = "March";
            break;
        case 4:
            monthString = "April";
            break;
        case 5:
            monthString = "May";
            break;
        case 6:
            monthString = "June";
            break;
        case 7:
            monthString = "July";
            break;
        case 8:
            monthString = "August";
            break;
        case 9:
            monthString = "September";
            break;
        case 10:
            monthString = "October";
            break;
        case 11:
            monthString = "November";
            break;
        case 12:
            monthString = "December";
            break;
        default:
            monthString = "Invalid month";
            break;
        }
        System.out.println(monthString);
    }
}

break 語(yǔ)句是為了防止 fall through。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class SwitchDemoFallThrough {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        java.util.ArrayList<String> futureMonths = new java.util.ArrayList<String>();
 
        int month = 8;
 
        switch (month) {
        case 1:
            futureMonths.add("January");
        case 2:
            futureMonths.add("February");
        case 3:
            futureMonths.add("March");
        case 4:
            futureMonths.add("April");
        case 5:
            futureMonths.add("May");
        case 6:
            futureMonths.add("June");
        case 7:
            futureMonths.add("July");
        case 8:
            futureMonths.add("August");
        case 9:
            futureMonths.add("September");
        case 10:
            futureMonths.add("October");
        case 11:
            futureMonths.add("November");
        case 12:
            futureMonths.add("December");
            break;
        default:
            break;
        }
 
        if (futureMonths.isEmpty()) {
            System.out.println("Invalid month number");
        } else {
            for (String monthName : futureMonths) {
                System.out.println(monthName);
            }
        }
    }
 
}

輸出為:

August
September
October
November
December

技術(shù)上來(lái)說(shuō),最后一個(gè) break 并不是必須,因?yàn)榱鞒烫?switch 語(yǔ)句。但仍然推薦使用 break ,主要修改代碼就會(huì)更加簡(jiǎn)單和防止出錯(cuò)。default 處理了所有不明確值的情況。

下面例子展示了一個(gè)局域多個(gè) case 的情況。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class SwitchDemo2 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int month = 2;
        int year = 2000;
        int numDays = 0;
 
        switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            numDays = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            numDays = 30;
            break;
        case 2:
            if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
                numDays = 29;
            else
                numDays = 28;
            break;
        default:
            System.out.println("Invalid month.");
            break;
        }
        System.out.println("Number of Days = " + numDays);
    }
}

輸出為:Number of Days = 29

使用 String

Java SE 7 開(kāi)始,可以在 switch 語(yǔ)句里面使用 String,下面是一個(gè)例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class StringSwitchDemo {
 
    public static int getMonthNumber(String month) {
 
        int monthNumber = 0;
 
        if (month == null) {
            return monthNumber;
        }
 
        switch (month.toLowerCase()) {
        case "january":
            monthNumber = 1;
            break;
        case "february":
            monthNumber = 2;
            break;
        case "march":
            monthNumber = 3;
            break;
        case "april":
            monthNumber = 4;
            break;
        case "may":
            monthNumber = 5;
            break;
        case "june":
            monthNumber = 6;
            break;
        case "july":
            monthNumber = 7;
            break;
        case "august":
            monthNumber = 8;
            break;
        case "september":
            monthNumber = 9;
            break;
        case "october":
            monthNumber = 10;
            break;
        case "november":
            monthNumber = 11;
            break;
        case "december":
            monthNumber = 12;
            break;
        default:
            monthNumber = 0;
            break;
        }
 
        return monthNumber;
    }
 
    public static void main(String[] args) {
 
        String month = "August";
 
        int returnedMonthNumber = StringSwitchDemo.getMonthNumber(month);
 
        if (returnedMonthNumber == 0) {
            System.out.println("Invalid month");
        } else {
            System.out.println(returnedMonthNumber);
        }
    }
}

輸出為:8

注:switch 語(yǔ)句表達(dá)式中不能有 null。

while

while 語(yǔ)句在判斷條件是 true 時(shí)執(zhí)行語(yǔ)句塊。語(yǔ)法如下:

?
1
2
3
while (expression) {
     statement(s)
}

while 語(yǔ)句計(jì)算的表達(dá)式,必須返回 boolean 值。如果表達(dá)式計(jì)算為 true,while 語(yǔ)句執(zhí)行 while 塊的所有語(yǔ)句。while 語(yǔ)句繼續(xù)測(cè)試表達(dá)式,然后執(zhí)行它的塊,直到表達(dá)式計(jì)算為 false。完整的例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class WhileDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int count = 1;
        while (count < 11) {
            System.out.println("Count is: " + count);
            count++;
        }
    }
}

用 while 語(yǔ)句實(shí)現(xiàn)一個(gè)無(wú)限循環(huán):

?
1
2
3
while (true){
    // your code goes here
}

do-while

語(yǔ)法如下:

?
1
2
3
do {
     statement(s)
} while (expression);

do-while 語(yǔ)句和 while 語(yǔ)句的區(qū)別是,do-while 計(jì)算它的表達(dá)式是在循環(huán)的底部,而不是頂部。所以,do 塊的語(yǔ)句,至少會(huì)執(zhí)行一次,如 DoWhileDemo 程序所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class DoWhileDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int count = 1;
        do {
            System.out.println("Count is: " + count);
            count++;
        } while (count < 11);
    }
}

輸出為:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

for

for 語(yǔ)句提供了一個(gè)緊湊的方式來(lái)遍歷一個(gè)范圍值。程序經(jīng)常引用為"for 循環(huán)",因?yàn)樗磸?fù)循環(huán),直到滿(mǎn)足特定的條件。for 語(yǔ)句的通常形式,表述如下:

?
1
2
3
4
for (initialization; termination;
     increment) {
    statement(s)
}

使 for 語(yǔ)句時(shí)要注意:

  • initialization 初始化循環(huán);它執(zhí)行一次作為循環(huán)的開(kāi)始。
  • 當(dāng) termination 計(jì)算為 false,循環(huán)結(jié)束。
  • increment 會(huì)在循環(huán)的每次迭代執(zhí)行;該表達(dá)式可以接受遞增或者遞減的值
?
1
2
3
4
5
6
7
8
9
10
11
12
class ForDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        for(int i=1; i<11; i++){
            System.out.println("Count is: " + i);
       }
    }
 
}

輸出為:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

注意:代碼在 initialization 聲明變量。該變量的存活范圍,從它的聲明到 for 語(yǔ)句的塊的結(jié)束。所以,它可以用在 termination 和 increment。如果控制 for 語(yǔ)句的變量,不需要在循環(huán)外部使用,最好是在 initialization 聲明。經(jīng)常使用 i,j,k 經(jīng)常用來(lái)控制 for 循環(huán)。在 initialization 聲明他們,可以限制他們的生命周期,減少錯(cuò)誤。

for 循環(huán)的三個(gè)表達(dá)式都是可選的,一個(gè)無(wú)限循環(huán),可以這么寫(xiě):

?
1
2
3
4
5
// infinite loop
for ( ; ; ) {
 
    // your code goes here
}

for 語(yǔ)句還可以用來(lái)迭代 集合(Collections) 和 數(shù)組(arrays),這個(gè)形式有時(shí)被稱(chēng)為增強(qiáng)的 for 語(yǔ)句( enhanced for ),可以用來(lái)讓你的循環(huán)更加緊湊,易于閱讀。為了說(shuō)明這一點(diǎn),考慮下面的數(shù)組:

?
1
int[] numbers = {1,2,3,4,5,6,7,8,9,10};

使用 增強(qiáng)的 for 語(yǔ)句來(lái)循環(huán)數(shù)組

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class EnhancedForDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] numbers =
            {1,2,3,4,5,6,7,8,9,10};
        for (int item : numbers) {
            System.out.println("Count is: " + item);
        }
    }
 
}

輸出:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

盡可能使用這種形式的 for 替代傳統(tǒng)的 for 形式。

break

break 語(yǔ)句有兩種形式:標(biāo)簽和非標(biāo)簽。在前面的 switch 語(yǔ)句,看到的 break 語(yǔ)句就是非標(biāo)簽形式。可以使用非標(biāo)簽 break 用來(lái)結(jié)束 for,while,do-while 循環(huán),如下面的 BreakDemo 程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class BreakDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 };
        int searchfor = 12;
 
        int i;
        boolean foundIt = false;
 
        for (i = 0; i < arrayOfInts.length; i++) {
            if (arrayOfInts[i] == searchfor) {
                foundIt = true;
                break;
            }
        }
 
        if (foundIt) {
            System.out.println("Found " + searchfor + " at index " + i);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
 
}

這個(gè)程序在數(shù)組終查找數(shù)字12。break 語(yǔ)句,當(dāng)找到值時(shí),結(jié)束 for 循環(huán)。控制流就跳轉(zhuǎn)到 for 循環(huán)后面的語(yǔ)句。程序輸出是:

Found 12 at index 4

無(wú)標(biāo)簽 break 語(yǔ)句結(jié)束最里面的 switch,for,while,do-while 語(yǔ)句。而標(biāo)簽break 結(jié)束最外面的語(yǔ)句。接下來(lái)的程序,BreakWithLabelDemo,類(lèi)似前面的程序,但使用嵌套循環(huán)在二維數(shù)組里尋找一個(gè)值。但值找到后,標(biāo)簽 break 語(yǔ)句結(jié)束最外面的 for 循環(huán)(標(biāo)簽為"search"):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class BreakWithLabelDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int[][] arrayOfInts = { { 32, 87, 3, 589 }, { 12, 1076, 2000, 8 }, { 622, 127, 77, 955 } };
        int searchfor = 12;
 
        int i;
        int j = 0;
        boolean foundIt = false;
 
        search: for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length; j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }
 
        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

程序輸出是:

Found 12 at 1, 0

break 語(yǔ)句結(jié)束標(biāo)簽語(yǔ)句,它不是傳送控制流到標(biāo)簽處。控制流傳送到緊隨標(biāo)記(終止)聲明。

注: Java 沒(méi)有類(lèi)似于 C 語(yǔ)言的 goto 語(yǔ)句,但帶標(biāo)簽的 break 語(yǔ)句,實(shí)現(xiàn)了類(lèi)似的效果。

continue

continue 語(yǔ)句忽略 for,while,do-while 的當(dāng)前迭代。非標(biāo)簽?zāi)J剑雎宰罾锩娴难h(huán)體,然后計(jì)算循環(huán)控制的 boolean 表達(dá)式。接下來(lái)的程序,ContinueDemo,通過(guò)一個(gè)字符串的步驟,計(jì)算字母“p”出現(xiàn)的次數(shù)。如果當(dāng)前字符不是 p,continue 語(yǔ)句跳過(guò)循環(huán)的其他代碼,然后處理下一個(gè)字符。如果當(dāng)前字符是 p,程序自增字符數(shù)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class ContinueDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        String searchMe = "peter piper picked a " + "peck of pickled peppers";
        int max = searchMe.length();
        int numPs = 0;
 
        for (int i = 0; i < max; i++) {
            // interested only in p's
            if (searchMe.charAt(i) != 'p')
                continue;
 
            // process p's
            numPs++;
        }
        System.out.println("Found " + numPs + " p's in the string.");
    }
 
}

程序輸出:

Found 9 p's in the string

為了更清晰看效果,嘗試去掉 continue 語(yǔ)句,重新編譯。再跑程序,count 將是錯(cuò)誤的,輸出是 35,而不是 9.
帶標(biāo)簽的 continue 語(yǔ)句忽略標(biāo)簽標(biāo)記的外層循環(huán)的當(dāng)前迭代。下面的程序例子,ContinueWithLabelDemo,使用嵌套循環(huán)在字符傳的字串中搜索字串。需要兩個(gè)嵌套循環(huán):一個(gè)迭代字串,一個(gè)迭代正在被搜索的字串。下面的程序ContinueWithLabelDemo,使用 continue 的標(biāo)簽形式,忽略最外層的循環(huán)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class ContinueWithLabelDemo {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        String searchMe = "Look for a substring in me";
        String substring = "sub";
        boolean foundIt = false;
 
        int max = searchMe.length() - substring.length();
 
        test: for (int i = 0; i <= max; i++) {
            int n = substring.length();
            int j = i;
            int k = 0;
            while (n-- != 0) {
                if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
                }
            }
            foundIt = true;
            break test;
        }
        System.out.println(foundIt ? "Found it" : "Didn't find it");
    }
 
}

這里是程序輸出:

Found it

return

最后的分支語(yǔ)句是 return 語(yǔ)句。return 語(yǔ)句從當(dāng)前方法退出,控制流返回到方法調(diào)用處。return 語(yǔ)句有兩種形式:一個(gè)是返回值,一個(gè)是不返回值。為了返回一個(gè)值,簡(jiǎn)單在 return 關(guān)鍵字后面把值放進(jìn)去(或者放一個(gè)表達(dá)式計(jì)算)。

?
1
return ++count;

return 的值的數(shù)據(jù)類(lèi)型,必須和方法聲明的返回值的類(lèi)型符合。當(dāng)方法聲明為 void,使用下面形式的 return 不需要返回值。

?
1
return;

總結(jié)

到此這篇關(guān)于Java中控制流程語(yǔ)句的文章就介紹到這了,更多相關(guān)Java控制流程語(yǔ)句內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://juejin.cn/post/7021026073345261598

延伸 · 閱讀

精彩推薦
826
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本视频免费高清一本18 | 五月婷婷中文 | 精品久久久久久久久久久 | 亚洲aⅴ天堂av在线电影软件 | 欧美精品亚洲精品 | 精品乱子伦一区二区三区 | 久草电影网 | 免费观看一级视频 | 欧美精品一二三区 | 亚洲va中文字幕 | 亚洲专区在线播放 | 日本成人一区 | 欧美在线免费观看 | 色播久久 | 亚洲精品二区三区 | 久久91久久久久麻豆精品 | 国产午夜视频在线观看 | 日韩美女视频 | 大香伊蕉在人线视频777 | 国产精品自拍视频网站 | 免费的成人毛片 | 午夜激情影视 | 福利视频在线播放 | 奇米二区 | 亚洲成人综合网站 | 中文字幕不卡一区 | 精品一区二区6 | 91精品久久| 亚洲生活片| 色婷婷一区二区三区 | 国产成人精品免费 | 久久久国产一级 | 国产精品一二 | 亚洲视频精品 | av网站在线免费观看 | 求av网址| 欧美一区二区三区在线观看视频 | 久久久久久亚洲 | 亚洲精品一区二区 | 欧美性猛交xxxx黑人猛交 | 欧美亚洲视频 |