黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 java中switch case語句需要加入break的原因是什么

java中switch case語句需要加入break的原因是什么

更新時間:2019-09-24 10:12:22 來源:動力節(jié)點 瀏覽2652次


今天動力節(jié)點java培訓機構小編為大家介紹“java中switch case語句需要加入break的原因是什么”,希望通過此文大家能夠知道switch case語句需要加入break的原因,下面就隨小編一起來了解一下吧。


timg (9).jpg


  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"); 

  } 


  當我們在執(zhí)行上面的方法時,如果我們傳入的參數是1,那么會輸出1、2、3和default,如果傳入的參數是2,那么會輸出2、3和default,這是為什么呢?這是因為switch的case語句是用來根據滿足條件從確定的行開始執(zhí)行的,如果不加入break語句跳出switch邏輯,則會一直往下執(zhí)行,這也是為什么上面的測試代碼會出現傳入參數為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行執(zhí)行,如果是2則跳到35行執(zhí)行,如果是3則跳到42行執(zhí)行。那么我們先來看程序的第28行到32行,其對應的就是調用System.out.println輸出1,完了后沒有特殊的指令,程序是會繼續(xù)順序執(zhí)行的,也就是會依次執(zhí)行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語句默認會執(zhí)行58行,如果傳入的參數是1則會執(zhí)行28行,如果是2則會從38行開始執(zhí)行,接著我們可以看到28行開始是執(zhí)行的System.out.println(1)的邏輯,完了后會順序執(zhí)行到35行,35行的指令是會引導程序執(zhí)行到第66行,也就是跳出了switch邏輯,對應我們的測試代碼就是程序結束了。這也是為什么我們在使用switch語句時通常需要在每個case語句結束時加入break指令的原因。


timg (10).jpg


以上就是動力節(jié)點java培訓機構小編介紹的“java中switch case語句需要加入break的原因是什么”的內容,希望對大家有幫助,更多java最新資訊請繼續(xù)關注動力節(jié)點java培訓機構官網,每天會有精彩內容分享與你。


相關免費視頻教程推薦——java初級入門教程下載


switch case:http://m.ilovecolors.com.cn/xiazai/2686.html


switch case中常見注意事項:http://m.ilovecolors.com.cn/xiazai/2685.html


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产一级α片 | 可以免费观看一级毛片黄a 可以免费观看的一级毛片 可以免费观看的黄色网址 可以看的黄色网址 | 妞干网中文字幕 | 开心久久激情 | 夜色影视 | 午夜国产精品久久影院 | 在线免费a视频 | 看片免费黄 | 狠狠添| 夜鲁夜鲁夜鲁在线观看福利 | 成人羞羞国产免费软件 | 黄色免费在线观看网址 | 欧洲成人免费高清视频 | 午夜视频久久 | 亚洲国产成人久久一区www | 另类免费视频 | 在线视频一区二区三区三区不卡 | 无遮挡一级毛片 | 无人区理论片手机看片 | 夜夜拍夜夜爽夜夜拍拍拍 | 国产aaaaaaa毛片 | a级特黄一级毛片七仙女思春 | 久久韩国| 真实乱欲视频 | 在线视频国产区11p 在线视频观看一区 | 久草视频在线网 | 成人久久久精品乱码一区二区三区 | 日本黄色片网址 | 伊人久久99 | 在线观看亚洲人成网站 | 一级做a爰片性色毛片武则天五则 | 日本在线一本 | 国产精品视频区 | 国产一级第一级毛片 | 日韩在线操 | 免费看男女下面日出水视频 | 欧美日韩在线观看视频 | 一区二区在线不卡 | 天天躁夜夜躁狠狠躁2021a | 欧美日产欧美日产精品 | 成人福利网站在线看视频 |