Javaの中のスイッチ
switch文の役割はif()elseに相当します。選択文です。文法は以下の通りです。
stringタイプも表現としてサポートできます。原理を調べられます。
caseを行って、equalsで比較して、条件を満たしたら、対応する語句を実行します。
このことから、stringを表現として使うより直接的に使うほうがいいです。×××あるいは列挙の効率が高いです。stringを使うとhashCodeメソッドを追加的に呼び出します。
hash衝突が発生しました。実はプログラミングの中で、やはり列挙を使って条件判断をします。
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衝突が発生しました。実はプログラミングの中で、やはり列挙を使って条件判断をします。