什麼是 Java 中的 Switch Case 以及如何使用它?

已發表: 2022-03-04

Java 中switch case是告訴編程語言做什麼的眾多 Java 語句之一。 與提供完整文本概念和包含子句的英語句子一樣,Java 語句是包含 Java 解釋器執行的一個或多個表達式的命令。 簡而言之,Java 語句是解釋應該發生什麼的指令。

Java 語句以分號 (;) 結尾,並告訴 Java 處理直到該分號的指令。 默認情況下,Java 解釋器遵循語句的編寫順序,一個接一個地運行語句。 但是,控製程序流的語句(流控制語句),例如循環和條件語句,不遵循默認的執行順序。 本文重點介紹一種這樣的選擇控制機制——Java switch case 語句。

目錄

Java中的switch case是什麼?

Java 支持三種語句:用於更改變量值、調用方法和創建對象的表達式語句、用於聲明變量的聲明語句和用於確定語句執行順序的控制流語句。

Java switch case 語句是一種控制流語句,它允許表達式或變量的值通過多路分支改變程序執行的控制流 與 if-then 和 if-then-else 語句相比, Java switch語句有多個執行路徑。 Java 中的 switch case適用於 short、byte、int 和 char 原始數據類型。 從 JDK7 開始,Java 開關還可以與 String 類、枚舉類型和包裝原始數據類型(如 Byte、Character、Integer 和 Short)的 Wrapper 類一起使用。

Java 中 switch case 語句的主體稱為 switch 塊。 switch 塊中的每個語句都使用一個或多個 case 或默認標籤進行標記。 因此,switch 語句評估其表達式,然後執行匹配 case 標籤後面的所有語句。

下面給出的是 switch case 語句的語法:

// 切換語句

開關(表達式)

{

// 案例陳述

// 值必須是相同類型的表達式

案例價值1:

// 語句

休息; // 中斷是可選的

案例價值2:

// 語句

休息; // 中斷是可選的

// 我們可以有任意數量的case語句

// 下面是默認語句,當所有情況都不成立時使用。

// 默認情況下不需要中斷。

默認 :

// 語句

}

Java switch 語句的示例

以下 Java 代碼示例聲明了一個名為“month”的 int,其值表示一年中的 12 個月之一。 該代碼使用 switch case 語句根據月份的值顯示月份的名稱。

公共類 SwitchExample {

公共靜態無效主要(字符串[]參數){

整數月 = 6;

字符串月份字符串;

開關(月){

案例1:monthString =“一月”;

休息;

案例 2:monthString = “二月”;

休息;

案例3:monthString =“三月”;

休息;

案例 4:monthString = “April”;

休息;

案例 5:monthString = “May”;

休息;

案例 6:monthString = “六月”;

休息;

案例 7:monthString = “七月”;

休息;

案例 8:monthString = “八月”;

休息;

案例 9:monthString = “September”;

休息;

案例 10:monthString = “十月”;

休息;

案例 11:monthString = “十一月”;

休息;

案例 12:monthString = “十二月”;

休息;

默認值:monthString = “無效月份”;

休息;

}

System.out.println(monthString);

}

}

輸出:六月

Java switch case中break語句的用途

break 語句是 Java switch case 的一個重要方面,它終止封閉的 switch 語句。 break 語句是必需的,因為沒有它,switch 塊中的語句就會失敗。 因此,無論後續 case 標籤的表達式如何,匹配的 case 標籤之後的所有語句都會順序執行,直到遇到 break 語句。

以下代碼是一個示例,用於顯示在沒有 break 語句的情況下切換塊失敗。

公共類 SwitchExampleFallThrough {

公共靜態無效主要(字符串[]參數){

java.util.ArrayList<String> futureMonths =

新的 java.util.ArrayList<String>();

整數月 = 6;

開關(月){

案例 1:futureMonths.add(“一月”);

案例 2:futureMonths.add(“二月”);

案例 3:futureMonths.add(“三月”);

案例4:futureMonths.add(“April”);

案例5:futureMonths.add(“May”);

案例 6:futureMonths.add(“六月”);

案例 7:futureMonths.add(“七月”);

案例 8:futureMonths.add(“August”);

案例 9:futureMonths.add(“September”);

案例 10:futureMonths.add(“十月”);

案例 11:futureMonths.add(“十一月”);

案例 12:futureMonths.add(“December”);

休息;

默認值:中斷;

}

如果 (futureMonths.isEmpty()) {

System.out.println(“無效的月份數”);

} 別的 {

對於(字符串月份名稱:futureMonths){

System.out.println(monthName);

}

}

}

}

輸出:

六月

七月

八月

九月

十月

十一月

十二月

上面的代碼顯示了與整數月份對應的一年中的月份以及隨後的月份。 在這裡,最後的 break 語句沒有任何作用,因為流程超出了 switch 語句。 使用 break 語句很有幫助,因為它使代碼不易出錯並且更容易修改。 代碼中的默認部分處理不受任何案例部分規定的所有值。

具有多個 case 標籤的 Java switch 語句

Java 中的 switch 語句也可以有多個 case 標籤。 下面的代碼說明了這一點——在這裡,計算了一年中特定月份的天數。

類 SwitchMultiple{

公共靜態無效主要(字符串[]參數){

整數月 = 2;

int 年 = 2020;

整數天數 = 0;

開關(月){

案例 1: 案例 3: 案例 5:

案例 7: 案例 8: 案例 10:

案例 12:

天數 = 31;

休息;

案例4:案例6:

案例 9: 案例 11:

天數 = 30;

休息;

案例2:

if (((年 % 4 == 0) &&

!(年 % 100 == 0))

|| (年 % 400 == 0))

天數 = 29;

別的

天數 = 28;

休息;

默認:

System.out.println(“無效月份。”);

休息;

}

System.out.println(“天數 = “

+ 天數);

}

}

輸出:

天數 = 29

嵌套的 Java switch case 語句

嵌套開關是指將開關用作外部開關語句序列的一部分。 在這種情況下,另一個 switch 中的 case 常量與內部 switch 中的 case 常量之間沒有衝突,因為 switch 語句定義了自己的塊。

以下示例演示了嵌套Java switch-case語句的使用:

公共類TestNest {

公共靜態無效主要(字符串 [] 參數)

{

字符串分支 = “CSE”;

int 年 = 2;

開關(年){

情況1:

System.out.println(“選修課:代數、高級英語”);

休息;

案例2:

switch (Branch) // 嵌套開關

{

案例“CSE”:

案例“CCE”:

System.out.println(“選修課:大數據、機器學習”);

休息;

案例“歐洲經委會”:

System.out.println(“選修課:天線工程”);

休息;

默認:

System.out.println(“選修課:優化”);

}

}

}

}

輸出:

選修課:大數據、機器學習

在 switch 語句中使用字符串

從 JDK7 開始,您可以在 switch 語句的表達式中使用 String 對象。 switch 語句表達式中的字符串對象與每個 case 標籤的關聯表達式的比較就像使用 String.equals 方法一樣。 此外,switch 語句表達式中字符串對象的比較是區分大小寫的。

以下代碼示例根據名為“game”的字符串的值顯示遊戲類型。

公共類 StringInSwitchStatementExample {

公共靜態無效主要(字符串[]參數){

字符串游戲=“板球”;

開關(遊戲){

案例“排球”:案例“足球”:案例“板球”:

System.out.println(“這是一個戶外遊戲”);

休息;

案例“紙牌遊戲”:案例“國際象棋”:案例“拼圖”:案例“室內籃球”:

System.out.println(“這是一個室內游戲”);

休息;

默認:

System.out.println(“這是什麼遊戲?”);

}

}

}

輸出:

這是戶外遊戲

使用 Java switch 語句時要記住的規則

最好在使用Java switch語句時牢記某些規則。 以下是相同的列表:

  • case 的值和 switch 中的變量應該具有相同的數據類型。
  • Java switch語句不允許重複的 case 值。
  • case 值應該是文字或常量。 不允許使用變量。
  • 在 switch 中使用 break 語句會終止語句序列。
  • break 語句是可選的,省略它將繼續執行到後續情況。
  • 默認語句也是可選的,可以出現在 switch 塊中的任何位置。 如果沒有放在最後,則必須在 default 語句之後添加一個 break 語句,以跳過後面的 case 語句的執行。

前進之路

Java 在程序員和開發人員中擁有無與倫比的流行度,並且是當今最受歡迎的編程語言之一。 毋庸置疑,想要為不斷發展的就業市場提升自身技能的新興開發人員和軟件工程師需要掌握 Java 技能。

upGrad 的軟件工程與工作相關的 PG 認證專為想要學習編碼並擔任入門級軟件角色的應屆生和應屆畢業生而設計。

如果您想知道為期 5 個月的在線課程需要什麼,這裡有一些亮點可以給您一個想法:

  • 獲得 MERN 堆棧和雲原生專業化
  • 學習 Java、DSA、CSS3、HTML5、AWS、MERN、SQL 和 NoSQL 數據庫等頂級技能
  • 500 多個小時的內容和 350 多個小時的實踐培訓
  • 五個行業項目和 50 多個現場會議
  • 安置準備和職業指導
  • 討論論壇和強大的同行網絡

如果您想開始您的軟件工程職業生涯,這是您向最優秀的人學習的機會。

1. switch 語句中的 case 是什麼?

Java 中的 switch 語句允許根據值列表測試變量的相等性。 在這裡,每個值都稱為一個案例,並為每個案例檢查打開的變量。

2、switch case有什麼優勢?

Java switch case 語句相對於傳統的 if-else 級聯的主要優勢在於前者允許程序員編寫更緊湊、清晰和可讀的代碼。 另一方面,if-else 語句通常涉及大量代碼重複。 因此,如果我們想要更改代碼的特定部分,我們將不得不在其他地方進行更改。 為了避免這個耗時且容易出錯的過程,使用 switch case 更為明智。

3、switch case和if-else有什麼區別?

在 switch 語句的情況下,case 一個接一個地依次執行,直到遇到 break 關鍵字或執行 default 語句。 相反,在 if-else 語句的情況下,根據條件執行“if”或“else”塊。