Javaの中のスイッチ


switch文の役割はif()elseに相当します。選択文です。文法は以下の通りです。
switch(   ){ 
    case      1:    1;
    case      2:    2;
    … 
    case      n:    n;
    default:    n+1;
}
注意したいのは、switchの表現のタイプはbyte、shot、char、int、enumタイプ、java 7の後になります。
stringタイプも表現としてサポートできます。原理を調べられます。
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"); 
          } 
      } }
上記のコードを逆コンパイルします。
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; 
               } 
          } }
javaの下の階はstringに対してhashCodeを呼び出していますが、帰りのhashCodeはintタイプです。実はやはりhashCodeを使います。
caseを行って、equalsで比較して、条件を満たしたら、対応する語句を実行します。
このことから、stringを表現として使うより直接的に使うほうがいいです。×××あるいは列挙の効率が高いです。stringを使うとhashCodeメソッドを追加的に呼び出します。
hash衝突が発生しました。実はプログラミングの中で、やはり列挙を使って条件判断をします。