PGBox
P
G
Box

switch文の文字列判定

Java7のメニューへ戻る



使用した環境
JDK 7 Update 4

switch文が文字列(String)でも利用可能になりました。


Java6までは、プリミティブ型やenum型しか判定に使用できなかったswitch文ですが
Java7からはString型も判定可能となりました。

    
String str = "あいうえお";

switch (str) {

    case "あいうえお":
        System.out.println("String switch");
        break;
        
    default:
        System.out.println("default");

}



結果は以下のようになります。
String switch

コンパイラによってequals()メソッドによるif文に変換されるような動作になります。
そのため空文字も可能です。
String str = "";

switch (str) {

    case "":
        System.out.println("String switch");
        break;
        
    default:
        System.out.println("default");

}


String switch


注意点としては、あくまでString#equals()メソッドによる判定のため、判定対象の変数の値がnullの場合はNullPointerExceptionが発生する事です。
String str = null;

switch (str) {

    case "":
        System.out.println("String switch");
        break;
        
    default:
        System.out.println("default");

}

上記のソースの実行結果は
Exception in thread "main" java.lang.NullPointerException
です。



また、下記のようなソースはコンパイルエラーとなります。
String str = null;

switch (str) {

    case null:
        System.out.println("String switch");
        break;
        
    default:
        System.out.println("default");

}


case 式は定数式でなければなりません





Java7のメニューへ戻る