中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么switch case語句在java中需要加入break

發布時間:2020-11-26 16:14:36 來源:億速云 閱讀:202 作者:Leah 欄目:編程語言

本篇文章為大家展示了為什么switch case語句在java中需要加入break,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

java 中使用switch case語句需要加入break 做了具體的實例分析,及編譯源碼,在源碼中分析應該如何使用,大家可以參考下:

假設我們有如下這樣一個switch語句:

public static void test(int index) { 
  switch (index) { 
  case 1: 
    System.out.println(1); 
  case 2: 
    System.out.println(2); 
  case 3: 
    System.out.println(3); 
  default: 
    System.out.println("Default"); 
  } 
}

當我們在執行上面的方法時,如果我們傳入的參數是1,那么會輸出1、2、3和default,如果傳入的參數是2,那么會輸出2、3和default,這是為什么呢?這是因為switch的case語句是用來根據滿足條件從確定的行開始執行的,如果不加入break語句跳出switch邏輯,則會一直往下執行,這也是為什么上面的測試代碼會出現傳入參數為2時會輸出2、3和default。
為此,我們也可以看一下上面的代碼編譯后的class文件,通過eclipse打開后,我們可以看到如下內容:

 public static void test(int index);
   iload_0 [index]
    tableswitch default: 49
     case 1: 28
     case 2: 35
     case 3: 42
   getstatic java.lang.System.out : java.io.PrintStream [22]
   iconst_1
   invokevirtual java.io.PrintStream.println(int) : void [28]
   getstatic java.lang.System.out : java.io.PrintStream [22]
   iconst_2
   invokevirtual java.io.PrintStream.println(int) : void [28]
   getstatic java.lang.System.out : java.io.PrintStream [22]
   iconst_3
   invokevirtual java.io.PrintStream.println(int) : void [28]
   getstatic java.lang.System.out : java.io.PrintStream [22]
   ldc <String "Default"> [33]
   invokevirtual java.io.PrintStream.println(java.lang.String) : void [35]
   return

 上面編譯后的語句每行前面的數字是程序的指定序號,我們可以把它簡單的理解為行號,我們可以看到數字為1的那行定義了一個switch指定,其默認會跳到49行,如果傳入的參數是1則跳到28行執行,如果是2則跳到35行執行,如果是3則跳到42行執行。那么我們先來看程序的第28行到32行,其對應的就是調用System.out.println輸出1,完了后沒有特殊的指令,程序是會繼續順序執行的,也就是會依次執行35、38、直到57行結束。
如果我們把源程序的case語句末端都加上break語句,如下這樣:

public static void test(int index) { 
  switch (index) { 
  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"); 
    break; 
  } 
}

那么對應的編譯的class文件通過Eclipse打開后可以看到如下內容:

public static void test(int index); 
  iload_0 [index] 
   tableswitch default: 58 
    case 1: 28 
    case 2: 38 
    case 3: 48 
  getstatic java.lang.System.out : java.io.PrintStream [22] 
  iconst_1 
  invokevirtual java.io.PrintStream.println(int) : void [28] 
  goto 66 
  getstatic java.lang.System.out : java.io.PrintStream [22] 
  iconst_2 
  invokevirtual java.io.PrintStream.println(int) : void [28] 
  goto 66 
  getstatic java.lang.System.out : java.io.PrintStream [22] 
  iconst_3 
  invokevirtual java.io.PrintStream.println(int) : void [28] 
  goto 66 
  getstatic java.lang.System.out : java.io.PrintStream [22] 
  ldc <String "Default"> [33] 
  invokevirtual java.io.PrintStream.println(java.lang.String) : void [35] 
  return

 我們可以看到switch語句默認會執行58行,如果傳入的參數是1則會執行28行,如果是2則會從38行開始執行,接著我們可以看到28行開始是執行的System.out.println(1)的邏輯,完了后會順序執行到35行,35行的指令是會引導程序執行到第66行,也就是跳出了switch邏輯,對應我們的測試代碼就是程序結束了。這也是為什么我們在使用switch語句時通常需要在每個case語句結束時加入break指令的原因。

 

上述內容就是為什么switch case語句在java中需要加入break,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陕西省| 衡南县| 奉新县| 南涧| 望江县| 唐河县| 南康市| 监利县| 甘南县| 黑河市| 留坝县| 新野县| 额济纳旗| 丹凤县| 枣庄市| 新和县| 郧西县| 错那县| 诏安县| 墨竹工卡县| 东至县| 南丹县| 凤冈县| 博野县| 岳西县| 扬中市| 阳谷县| 河南省| 连云港市| 竹山县| 大冶市| 新野县| 镇江市| 巴彦淖尔市| 泽库县| 台东县| 富顺县| 社旗县| 年辖:市辖区| 罗山县| 宜兴市|