歡迎您光臨本站 註冊首頁

switch迴圈所支援的資料型別案例分析

←手機掃碼閱讀     zhang3221994 @ 2020-06-12 , reply:0

在java值有三大迴圈與句,for swichwhile 除此之外還有一個與while相差無幾的do....while;

swich迴圈語法如下:

  switch (key) {      case value:                break;        default:        break;      }

 

其中的key值就是變數,這個變數的型別可以為什麼呢?

答:在JDK1.5之前,switch迴圈只支援byte short char int四種資料型別.JDK1.5在switch迴圈中增加了列舉類與byteshortcharint的包裝類,對四個包裝類的支援是因為java編譯器在底層手動進行拆箱,而對列舉類的支援是因為列舉類有一個ordinal方法,該方法實際上是一個int型別的數值.jdk1.7開始支援String型別,但實際上String型別有一個hashCode演演算法,結果也是int型別.而byteshortchar型別可以在不損失精度的情況下向上轉型成int型別.所以總的來說,可以認為switch中只支援int.

我們來看資料型別的大小 (從小到大):byte―> short, char―> int ―> long―>float ―> double

我們清楚資料型別小轉大是不需要強轉的所以int以下包含int就是swich迴圈中key值所包含的資料型別

下面有一個小例題:

  public static void main(String[] args) {          /*byte x = 1;          short x = 1;          String x = "1";          long x = 1;          double x = 1;          int x =1;          char x =1;          Integer x = new Integer("1");*/        switch (x) {         case 1:         System.out.println("One");        break;        case 2:        System.out.println("Two");         break;        }        }

 


總結:swich所支援的基本資料型別有:byte,short ,char,int。以及他們封裝型別如:Integer Byte等...

ps:下面看下switch支援的資料型別

在JDK1.5之前,switch迴圈只支援byte short char int四種資料型別。JDK1.5 在switch迴圈中增加了列舉類與byte short char int的包裝類,對四個包裝類的支援是因為java編譯器在底層手動進行拆箱,而對列舉類的支援是因為列舉類有一個ordinal方法,該方法實際上是一個int型別的數值。
 JDK1.7開始支援String型別,但實際上String型別有一個hashCode演演算法,結果也是int型別。而byte short char型別可以在不損失精度的情況下向上轉型成int型別。所以總的來說,可以認為switch中只支援int。

  package test.switch_com;  public class Demo1_Switch {    /**     **/    public static void main(String[] args) {      checkName("no");      //checkName1(2);    }    public static void checkName(String op) {      switch (op) {        case "no":          System.out.println("op");          break;        case "contains":          System.out.println("contains");          break;        default:          break;      }    }    /*錯誤示例    public static void checkName1(long op) {      switch (op) {        case 1:          System.out.println("op");          break;        case 2:          System.out.println("contains");          break;        default:          break;      }    }*/  }

  


[zhang3221994 ] switch迴圈所支援的資料型別案例分析已經有231次圍觀

http://coctec.com/docs/java/show-post-238256.html