2.Switch語句的參數類型

Switch語句的參數類型

JDK1.6 的版本中,switch後面的括號裏面只能放int類型的值,注意是隻能放int類型,可是放byte,short,char類型的也能夠。是由於byte,short,shar能夠自動提高(自動類型轉換)爲int。而不能放long型和String型。java

JDK1.7 的版本中,switch中可使用字串String。但仍不支持long型。優化

原理:hashCode()+equals() 
編譯器在編譯期間給代碼作了轉換。spa

原始代碼:code

public class StringInSwitchCase { 
      public static void main(String[] args) { 
            String mode = args[0]; 
            switch (mode) { 
                  case "ACTIVE": 
                        System.out.println("Application is running on Active mode"); 
                        break; 
                  case "PASSIVE":
                        System.out.println("Application is running on Passive mode"); 
                         break; 
                  case "SAFE": 
                          System.out.println("Application is running on Safe mode"); 
          } 
      } 
}

 

編譯器優化後:編譯器

import java.io.PrintStream; 

public class StringInSwitchCase{ 
      public StringInSwitchCase() { } 

      public static void main(string args[]) { 
             String mode = args[0]; 
            String s; switch ((s = mode).hashCode()) { 
                  default: break; 
                  case -74056953: 
                        if (s.equals("PASSIVE")) { 
                                    System.out.println("Application is running on Passive mode"); 
                         } 
                        break; 
                  case 2537357: 
                        if (s.equals("SAFE")) { 
                              System.out.println("Application is running on Safe mode"); 
                         } 
                        break; 
                  case 1925346054: 
                        if (s.equals("ACTIVE")) { 
                              System.out.println("Application is running on Active mode"); 
                         } 
                        break; 
               } 
          } 
}
相關文章
相關標籤/搜索