リファレンストップへ Java | switch文の文字列判定使用した環境 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 式は定数式でなければなりません |
|