【Java】switch文で比較できる型とは?int と String の違いをやさしく解説

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

Java の switch 文は、
比較対象の型によって動作が変わる という特徴があります。

  • int の比較はどう動く?
  • String の比較は equals と同じ?
  • どんな型が使えるの?

こうした疑問は、switch の比較ルールを知ると一気にスッキリします。

この記事では、やさしく・実務寄りに
switch の比較対象(int / String の違い)を整理していきます。


まずはコードを確認(int の場合)

Java
int n = 2;

switch (n) {
    case 1:
        System.out.println("One");
        break;
    case 2:
        System.out.println("Two");
        break;
    default:
        System.out.println("Other");
}

int の比較は「値の一致」で判定される

int の場合、
case の値と完全一致したときにそのブロックが実行されます。

  • 1 と 1 → 一致
  • 2 と 2 → 一致
  • 2 と 3 → 不一致

とてもシンプルです。


では String の場合は?

Java
String s = "hello";

switch (s) {
    case "hello":
        System.out.println("Hi");
        break;
    case "bye":
        System.out.println("Goodbye");
        break;
    default:
        System.out.println("Other");
}

String の比較は「equals と同じ」

String の比較は
内部的に equals を使って判定されます。

つまり:

  • "hello".equals("hello") → true
  • "hello".equals("HELLO") → false(大文字小文字は区別)

このルールがそのまま switch に適用されます。

つまり String の switch は「内容比較」

参照比較(==)ではありません。


int と String の比較の違いまとめ

比較対象比較方法特徴
int値の一致シンプルで高速
Stringequals による内容比較大文字小文字を区別

switch で使える型(Java 7 以降)

Java では、switch の比較対象として次の型が使えます。

使える型

  • int / byte / short / char(整数系)
  • String
  • enum
  • Integer / Byte / Short / Character(ラッパー型)

使えない型

  • boolean
  • long
  • float / double
  • オブジェクト全般(String 以外)

String の比較で起きやすいミス

ミス①:大文字小文字を区別することを忘れる

Java
String s = "HELLO";

switch (s) {
    case "hello": // 一致しない
        ...
}

equals と同じなので、 大文字小文字は区別されます。

対策:toLowerCase() を使う

Java
switch (s.toLowerCase()) {
    case "hello":
        ...
}

ミス②:null を渡すと NullPointerException

Java
String s = null;

switch (s) { // ← NPE

String の switch は内部で equals を使うため、 null を渡すと例外になります。

対策:null チェックを先に行う

Java
if (s == null) return;

switch (s) { ... }

実務での使い分け

int の switch が向いている場面

  • 数値コードの判定
  • パフォーマンス重視
  • シンプルな条件分岐

String の switch が向いている場面

  • コマンド名
  • ステータス文字列
  • ユーザー入力の判定

まとめ

int の switch

  • 値の一致で判定
  • シンプルで高速

String の switch

  • equals による内容比較
  • 大文字小文字は区別
  • null は例外になる

switch で使える型

  • 整数系
  • String
  • enum
  • 一部のラッパー型

decopon
decopon

switch 文は、 「比較対象の型によって動作が変わる」 という特徴を知るだけで、一気に理解が深まります。特に String の switch は便利ですが、 equals と同じ動きをすることを知っておくと 実務でも安心して使えます。あなたの学びが、次のステップにつながりますように。

moco
moco

int は“数字の一致”、String は“内容の一致”。
この違いを知ると、switch がもっと使いやすくなるよ。

コメント

タイトルとURLをコピーしました