【Java】switch文でStringの文字列を扱う方法

こんにちは!フリーランスの桃太郎です。

Javaのswitch文でString型の文字列を使いたい場面が少なからずあります。

そのようなとき、ふと使い方が合っているか不安に感じたことはないですか?

その不安を解決するのが本記事です。

この記事では、

・そもそもswitchとは

・Javaのswitch文でString型の文字列で条件分岐

という基本的な内容から、

・Java6以前でEnumを使って文字列を扱う方法

・switchでexceptionが発生!!その原因と対策

などの実際の開発現場で直面しそうな問題に関しても解説していきます。

switch文のString型文字列の対応について正しく理解し、必要な場面で使いこなすことができるように、わかりやすく解説します!

そもそもswitchとは

解説を進めていく前に、もしあなたがswitch文の基本的な内容がそもそも分からないという状態であれば、まずは以下の記事を参考にしてみて下さいね。

そうすることで本記事をよりスムーズに読むことができ、あなたの頭の中のモヤモヤがよりスッキリしているはずです。

[頭の中をスッキリしたい方はこちら!]
【Java入門】switch-case文の使い方総まとめ
更新日 : 2019年4月19日

Javaのswitch文でString型の文字列で条件分岐

switch文そのものに対する準備はバッチリですね。

では、改めてswitch文でString型の文字列を扱い条件分岐させる方法について解説していきます。

Java7からswitch文がString型の文字列に対応しています。

Java6以前ではswitch文の式にString型の文字列は使えませんでした。

参考までにswitch文で使える型は、int、short、char、byte、enum、Stringです。

また条件分岐が多い処理の場合、if文よりもswitch文の方がパフォーマンスが良いとされています。

そして、switch文の文字列の比較にはequalsメソッドが内部で使われています。

そのため、equalsメソッドと同じように比較する文字列の大/小文字が区別されるので、その点は注意しましょう。

では具体的なサンプルをみていくことしましょう。

実行結果

上記の通り、swtich(変数)の変数箇所にString型の文字列を入れて条件分岐できることが確認できました。

そして先ほど条件分岐が多い場合はif文よりもswitch文の方がパフォーマンスが良いことを伝えましたが、さらにもう一つswitch文のメリットがあります。

そのメリットとは実装ミスが起こりにくいことです。

どういうことかと言いますと、switch文ではcaseに指定する値が重複しているとコンパイルエラーが発生します。

つまり、条件分岐の選択肢が多い場合に、プログラマーが選択肢を書き間違えたことに気が付く仕組みがif文には無く、switch文には有るということです。

上記の処理をif文で書いた際に、以下のような書き方をしてもコンパイルエラーで検知してもらえないということです。

実行結果

ということで、条件分岐が多い時はswitch文を利用することをオススメします!

Java6以前でEnumを使って文字列を扱う方法

Java6以前の環境で文字列をswitch文で比較するには、Enumを使う方法があります。

詳しい方法はこちらの記事で確認してください!

【8分でわかる】Enumクラスで文字列を使った比較・変換テクニックをわかりやすく解説!
更新日 : 2017年6月7日

これまで解説してきた通り、最新のJavaバージョンではswitch文にて条件分岐に文字列を指定できますが、Java6以前はコンパイルエラーとなります。

その為、Java6以前のバージョンを利用している環境ではEnumを利用して擬似的に文字列分岐を行います。

switchでexceptionが発生!!その原因と対策

以前に筆者が実際に直面したバグに、このようなことがありました。

有るサイトへの流入経路(ユーザがどのページから自前のページに入ってきたか)を調べるために、リファラー(ページ遷移元の情報)を取得し処理する実装を行いました。

リファラーは通常であれば何がしかの値が入っています。

ですが、例えば自前のページをブックマークとしてお気に入り追加をしていて、数日後にブックマークから自前のページに遷移してきた場合は、リファラーがnullとなる場合があります。

そこを考慮せずにswitch文で以下のような処理を実装すると実行時にNullPointerExceptionが発生します。

実行結果

このような場合、switch文の前にnullチェックを入れ、nullの場合は分岐させたい文字列に変換しておくということが対策として有効です。

switch文で例外が発生した際には、上記のような原因や対策が実施されているかどうかチェックしてみて下さいね。

まとめ

いかがでしたか?

今回はswitch文でString型の文字列を使う方法について解説しました。

文字列がnullの場合は例外が発生するので注意してくださいね。

もしswitch文の文字列の扱い方について忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

湯浅 桃太郎

湯浅 桃太郎

20代は役者、30代はエンジニア、そして40代を迎えた現在、Webライターとして活動しながら、3人の息子たちの家庭教育、アンチエイジングなどにも力を入れて日々ノマドライフを楽しんでいます。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説