整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Java 14中優雅的Switch Case語句

          Java 14中優雅的Switch Case語句

          ava 14是Java編程語言的最新版本之一,引入了許多令人興奮的新功能和改進。其中一個備受關注的功能是對Switch Case語句的增強,使其在編寫代碼時更加優雅和靈活。本文將介紹Java 14中這一改進后的Switch Case語句,并探討其在代碼中的應用。

          1. 簡潔的語法:在Java 14之前,Switch Case語句只能通過常量表達式進行比較。然而,Java 14引入了“箭頭”(->)操作符,允許我們在Switch Case語句中使用更靈活的表達式。這意味著我們可以在每個Case子句中使用表達式,而不僅限于常量值。讓我們看一個簡單的示例:


          int dayOfWeek=3;
          String dayType=switch (dayOfWeek) {
              case 1, 2, 3, 4, 5 -> "Weekday";
              case 6, 7 -> "Weekend";
              default -> "Invalid day";
          };
          System.out.println(dayType);

          在這個例子中,我們使用箭頭操作符將多個常量值組合在一起,從而在一個Case子句中處理多個情況。這樣的語法簡潔明了,使得代碼更易讀和維護。

          1. Yield語句:Java 14引入了Yield語句,它可以與Switch Case語句一起使用,用于返回一個值并終止Switch Case塊。這對于編寫更復雜的邏輯非常有用。以下是一個示例:


          int dayOfWeek=3;
          String dayType=switch (dayOfWeek) {
              case 1, 2, 3, 4, 5 -> {
                  yield "Weekday";
              }
              case 6, 7 -> {
                  yield "Weekend";
              }
              default -> {
                  yield "Invalid day";
              }
          };
          System.out.println(dayType);

          在這個例子中,我們使用Yield語句返回了每個Case子句的結果,并終止了Switch Case塊的執行。這使得我們可以在不使用Break語句的情況下,更清晰地返回結果并控制代碼流程。

          1. 更安全的Switch Case:在Java 14之前,如果我們忘記在一個Case子句中加上Break語句,代碼將會繼續執行下一個Case子句,這可能導致意外的行為。為了解決這個問題,Java 14引入了新的關鍵字“Case L ->”,它將只允許在指定的Case子句中執行代碼塊,而不會繼續執行下一個Case子句。以下是一個示例:


          int dayOfWeek=3;
          String dayType=switch (dayOfWeek) {
              case 1, 2, 3, 4, 5 -> {
                  System.out.println("Weekday");
                  yield "Weekday";
              }
              case 6, 7 -> {
                  System.out.println("Weekend");
                  yield "Weekend";
              }
              default -> {
                  System.out.println("Invalid day");
                  yield "Invalid day";
              }
          };
          System.out.println(dayType);

          在這個例子中,我們在每個Case子句中添加了一個打印語句,以便在執行時輸出相應的消息。由于每個Case子句中都使用了“Case L ->”語法,即使我們忘記了添加Break語句,代碼也只會執行當前的Case子句,而不會繼續執行下一個Case子句。

          結論:Java 14中改進的Switch Case語句使得我們能夠以更優雅和靈活的方式編寫代碼。新的語法簡潔明了,Yield語句提供了更好的控制流程的能力,而“Case L ->”關鍵字則增加了代碼的安全性。這些改進使得Switch Case語句在處理多個條件分支時更加易讀、簡潔和可維護。建議在使用Java 14及更高版本時,充分利用這些改進,以提升代碼的質量和效率。

          摘自:科學隨想錄

          層嵌套的 if-else 語句在語法上是正確的,但邏輯上卻沒有正確地表達程序員的意圖,例如,意料之外的 else-if 更可能不會注意到而被溜過去;C語言還提供了另一種用于多分支選擇的switch語句,作為一種在一組互斥的項目中做選擇的替代方法,根據變量的不同取值來執行不同的代碼塊。其一般形式為:

          switch(表達式){

          case 表達式1: 語句1;

          case 表達式2: 語句2;

          case 表達式n: 語句n;

          default: 語句n+1;

          }

          計算表達式的值,然后逐個與case后的表達式值進行比較,當case后的表達式的值與switch表達式的值相等時, 即執行對應case后的語句,然后不再進行判斷,繼續執行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執行default后的語句。

          int main(void){

          int a;

          scanf("%d",&a);

          switch (a){

          case 1:printf("Monday\n");

          case 2:printf("Tuesday\n");

          case 3:printf("Wednesday\n");

          case 4:printf("Thursday\n");

          default:printf("error\n");

          }

          return 0;

          }

          如果我們輸入1,case 1:后面的語句開始執行,但是程序并沒有再執行這條語句后停止,而是繼續執行下面的case語句,包括default,直到程序結束。這是因為我們必須顯式地告訴編譯器停止執行switch中的語句,這可以通過在switch語句內的每個執行單元后指定一個break語句來完成 在大多數條件下一個 case標簽的最后一條語句是break。當遇到 break 語句switch語句被終止。正確的代碼如下:

          int main(void){

          int a;

          scanf("%d",&a);

          switch (a){

          case 1:printf("Monday\n"); break;

          case 2:printf("Tuesday\n"); break;

          case 3:printf("Wednesday\n"); break;

          case 4:printf("Thursday\n"); break;

          default:printf("error\n");

          }

          return 0;

          }

          那么程序員什么時候希望省略 break 語句?如果多個 case 語句都執行相同的功能代碼時,允許程序執行多個 case 標簽!例如輸入學生成績,大于90分為優,大于70分為一般,大于60分為良,小于60分為差,可用以下代碼實現:

          int main(void){

          int score;

          scanf("%d",&score);

          switch (score/10){

          case 10:

          case 9: printf("優\n"); break;

          case 8:

          case 7: printf("一般\n"); break;

          case 6:printf("良\n"); break;

          default:printf("差\n");

          }

          return 0;

          }

          把case標簽一個接一個堆起來,以強調這種情形代表的是一個要被匹配的范圍,例如case10和case9為一組,超市score/10等于10或者9,即90分以上的條件。

          總結:

          • 在case后的各常量表達式的值不能相同,否則會導致編譯錯誤。
          • 在case后,允許有多個語句,可以不用{}括起來。
          • 所有的case都是"或"or的關系,每時每刻只有一個case會滿足條件。
          • 每個case中的代碼執行完畢后,必須要用break 語句來阻止代碼自動地向下一個case運行。
          • 如果不寫 break 語句的話,下面所有的 case 語句都會執行一遍。
          • 請使用default關鍵詞來規定匹配不存在時做的事情??墒÷圆粚?。

          以上是老韓關于Linux c基礎的總結歡迎一起討論,如有不足歡迎指點;對Linux c或者Linux驅動感興趣的朋友可以收藏關注,我會持續更新的,謝謝支持!

          witch case 語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支。

          語法格式如下:

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

          switch case 語句有如下規則

          • switch 語句中的變量類型可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支持字符串 String 類型了,同時 case 標簽必須為字符串常量或字面量。
          • switch 語句可以擁有多個 case 語句。每個 case 后面跟一個要比較的值和冒號。
          • case 語句中的值的數據類型必須與變量的數據類型相同,而且只能是常量或者字面常量。
          • 當變量的值與 case 語句的值相等時,那么 case 語句之后的語句開始執行,直到 break 語句出現才會跳出 switch 語句。
          • 當遇到 break 語句時,switch 語句終止。程序跳轉到 switch 語句后面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程序會繼續執行下一條 case 語句(繼續執行下面所有的語句),直到出現 break 語句。
          • switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最后一個分支(可以在任何位置,但建議在最后一個)。default 在沒有 case 語句的值和變量值相等的時候執行。default 分支不需要 break 語句。

          主站蜘蛛池模板: 国产福利电影一区二区三区,免费久久久久久久精 | 无码人妻精品一区二区三18禁| 一区二区三区视频免费观看| 免费精品一区二区三区第35| 国产嫖妓一区二区三区无码| 久久综合亚洲色一区二区三区| 人妻内射一区二区在线视频| 久久精品无码一区二区三区免费| 久久国产免费一区二区三区 | 国产91精品一区二区麻豆网站| 国产在线无码一区二区三区视频 | 日韩动漫av在线播放一区| 国产怡春院无码一区二区| 日韩精品一区二区三区中文| 亚洲熟女一区二区三区| 97精品国产福利一区二区三区| 一区二区三区四区在线观看视频| 精品国产日韩亚洲一区在线| 国模精品一区二区三区视频| 亚洲变态另类一区二区三区| 成人区精品一区二区不卡亚洲| 韩国福利一区二区美女视频 | 真实国产乱子伦精品一区二区三区| 精品一区二区三区无码免费直播| 国产福利一区视频| 日韩精品一区二区午夜成人版| 日本一区二区三区中文字幕| 日韩精品一区二区三区在线观看| 一区二区不卡视频在线观看| 午夜精品一区二区三区在线视 | 国产一区二区精品久久岳√| 国产一区二区三区无码免费| 亚洲成人一区二区| 日韩免费观看一区| 亚洲精品国产suv一区88| 国产精品久久久久一区二区 | 久久毛片一区二区| 日韩在线视频一区二区三区| 午夜无码视频一区二区三区| 国产一区二区免费| 天堂va在线高清一区|