Java初心者必見!「if」と「switch」の正しい使い分け方を具体例でやさしく解説

こんにちは。ゆうせいです。

今回はJava初心者が最初につまずきやすいテーマの一つ、「if文とswitch文の使い分け」についてわかりやすくお話しします。

「条件分岐ってifとswitchの2つがあるけど、どっちを使えばいいの?」
こんな疑問を持ったことはありませんか?

結論から言えば、使い分けのコツさえわかれば悩む必要はありません。例え話を交えながら丁寧に解説していきますね!


if文とswitch文の基本的な違いとは?

まずは、それぞれの特徴をサクッと整理しておきましょう。

比較項目if文switch文
対応する値の種類条件式(論理式)が使える値(数値、文字列、enumなど)の一致比較
柔軟性高い(複雑な条件もOK)限定的(==の比較のみ)
見やすさ条件が多いとごちゃごちゃしやすい選択肢が多いときに見やすい

例を使って理解しよう!

if文の得意な場面:条件が複雑なとき

たとえば「ユーザーが成人で、かつ会員であるか」をチェックするような複雑な条件は、if文の出番です。

例:

int age = 22;
boolean isMember = true;

if (age >= 20 && isMember) {
    System.out.println("成人の会員です");
} else {
    System.out.println("条件を満たしていません");
}

ポイント: &&(かつ)や ||(または)など、論理演算子を使った複雑な条件判定が可能なのがif文の強みです。


switch文の得意な場面:選択肢が明確なとき

「今日は何曜日?」みたいに、固定された値に応じて処理を分けたいときにはswitchが向いています。

例:

String day = "火曜日";

switch (day) {
    case "月曜日":
        System.out.println("週の始まりです");
        break;
    case "火曜日":
        System.out.println("少し慣れてきた頃ですね");
        break;
    case "金曜日":
        System.out.println("もうすぐ週末!");
        break;
    default:
        System.out.println("普通の日です");
}

ポイント: 曜日や数値、文字列など、決まった選択肢の中から処理を分けるのに便利です。


ifとswitchの選び方のコツ

こんなときは「if」!

  • 条件に範囲や比較が含まれるとき(例:20歳以上、50点以上80点未満)
  • 複数の条件を組み合わせる必要があるとき(例:年齢が20以上かつ会員)
  • 変数の型がbooleanやfloatなど、switchでは使えないもののとき

例:

int score = 75;

if (score >= 90) {
    System.out.println("S評価");
} else if (score >= 70) {
    System.out.println("A評価");
} else {
    System.out.println("それ以下の評価");
}


こんなときは「switch」!

  • 明確な選択肢の中から分岐したいとき(曜日、メニュー番号、コマンド名など)
  • 判定の対象が intcharStringenum などであるとき
  • caseごとの処理が比較的単純で見通しよく書けるとき

例:

int menu = 2;

switch (menu) {
    case 1:
        System.out.println("ラーメンを選びました");
        break;
    case 2:
        System.out.println("カレーを選びました");
        break;
    case 3:
        System.out.println("ハンバーグを選びました");
        break;
    default:
        System.out.println("メニューにありません");
}

よくあるミスに注意!

switchに使えない型を使ってしまう

Javaでは、switch文で使える型は制限があります(Java 7以降は String もOK)。

使用可使用不可
int, short, byte, char, enum, Stringboolean, float, double, long

break文を忘れる

switch (value) {
    case 1:
        System.out.println("A");
    case 2:
        System.out.println("B");
}

このように break を書かないと、意図せず次のcaseにも処理が流れてしまう(フォールスルー)ので注意が必要です。


数式で例えてみよう!

たとえば以下のような条件分岐があるとします。

  • A ≧ 90:S評価
  • A ≧ 70:A評価
  • それ以外:B評価

これは数値の大小によって分岐するので、if文が適しています

一方で、以下のように値が固定されている場合はswitchがぴったりです。

  • 1:月曜日
  • 2:火曜日
  • 3:水曜日

今後の学習の指針

if文とswitch文は、Javaの基礎中の基礎です。

ですが、ここをきちんと理解しておくことで、今後の「例外処理」や「状態遷移」などの理解が格段にしやすくなります。

これから次のステップとして学ぶとよいのは:

  • 三項演算子(if文を簡潔に書く方法)
  • enum(列挙型)との連携
  • 状態パターン(State Pattern)
  • ラムダ式やストリームとの使い分け

迷ったらまずは「この条件は比較が必要か?それとも値の一致か?」という視点で考えるのがおすすめです。

疑問があればいつでも聞いてくださいね!一緒にステップアップしていきましょう。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。