プロプログラマ -Flex,Air,C#,Oracle,PHP-

プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます

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のよいところなんですけど。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です