Javaのswitch文でStringを判定する (おさらい)
最近このプログを”Java switch String”で検索して訪問される方がとっても多いです。
Java7から搭載されたSwitch文で文字列を判定する機能です。
他の言語では当たり前のように使えるswitch文での文字列判定ですが、
JavaはVer7まで来てやっと使えるようになりました。
なにか問題でもあったんでしょうか。
せっかくなので、switch文について再度おさらいしておきます。
紹介しておきながら、実はまだ実務で使ったこと有りません…
機能拡張されたといっても、
使い勝手的には以前のswitch文と何ら変わりません。
単に文字列が指定できるようになっただけです。
String key = "orange"; String result = ""; switch (key) { case "apple": result = "りんご"; break; case "orange": result = "オレンジ"; break; default : result = "その他"; break; } System.out.println("キー=" + result);
Javaは文字列の判定にequalsを使いますのでJavaに慣れてない人からすると、
if文での判定コードは分かりにくいかもしれませんが、swithc文なら分かりやすいですね。
注意すべきは、switch文の判定は内部的にはequalsと同じってところです。
判定する値がnullの場合、例外が発生します。(NullPointerException)
また、caseにnullを指定することもできません。
nullかどうかは、switch文の前で判定しておく必要があります。
case nullは使えるようにしておいて欲しかったです。
結局if文が必要ですよね。
if (key == null) { return} ...
しょうがないので、nullの時には判別できる適当な文字列を入れておいて、
switch文で無理やり判定すれば何とかなります。
String key = null; if (key == null) { key = "null"; } String result = ""; switch (key) { case "apple": result = "りんご"; break; case "orange": result = "オレンジ"; break; case "null": result = "指定なし"; break; default : result = "その他"; break; } System.out.println("キー=" + result);
Javaはなんというか言語仕様がお固いですね。厳密というか。
phpやactionscriptみたいな柔軟性にかけます。
そこがJavaのよいところなんですけど。
== ランキングに参加しています。ぜひクリックお願いします ==
iOS6の地図データ大幅更新! Breakキーがない場合の代用