【初心者向けエラーシリーズ#3】「型が一致しません(Type mismatch)」って何?Javaのデータ型とよくあるエラーを解説!

この記事は約4分で読めます。
記事内に広告が含まれています。

はじめに:「型が一致しません」はJavaに慣れてきた頃の定番エラー

Javaの文法に少し慣れてきて、変数を使ったり、メソッドを呼び出したりするようになると、次に出くわすのがこのエラーです:

エラー: 型が一致しません(Type mismatch: cannot convert from ○○ to △△)

これは、Javaにおいてとても基本的だけど、ちょっとわかりにくいエラーのひとつです。
なぜこのエラーが出るのか、どんなパターンで発生しやすいのか、そしてどう直せばいいのかを丁寧に見ていきましょう。

「型が一致しません」エラーの意味

Javaは厳格な型(データ型)を持つ言語です。
つまり、変数には「これは整数(int)です」「これは文字列(String)です」といったデータの種類(型)を明示的に伝える必要があります。

このエラーはつまり、

「その変数(または代入式)に使われている型が、指定されている型と合っていませんよ」

というJavaからのメッセージです。

よくあるエラー例と解説

よくある原因1:intとStringを混ぜる

間違った例:

int number = "100";

"100" は文字列(String)であり、整数(int)ではないため、次のようなエラーになります。

エラー文:

Type mismatch: cannot convert from String to int

修正方法:

int number = Integer.parseInt("100");  // 文字列を数値に変換する
// または
int number = 100;  // 直接数値を代入

よくある原因2:戻り値の型が違う

間違った例:

String text = getNumber();

public static int getNumber() {
    return 123;
}

エラー文:

Type mismatch: cannot convert from int to String

修正方法:

String text = String.valueOf(getNumber());
// または
int text = getNumber();

よくある原因3:小数と整数の違い(doubleとint)

間違った例:

int value = 3.14;

エラー文:

Type mismatch: cannot convert from double to int

修正方法:

int value = (int) 3.14;  // 明示的な型変換(キャスト)
double value = 3.14;     // 型をdoubleに合わせる

エラー時に確認すべきポイント

  • 変数の型と代入する値の型が一致しているか
  • メソッドの戻り値と受け取り側の型が合っているか
  • 暗黙の型変換ではなく、明示的なキャストが必要な場合もある
  • プリミティブ型(int, double など)とラッパークラス(Integer, Double)の違いにも注意

復習クイズ:このコードは何が問題?

次のコードを見て、どこにエラーがあるか考えてみましょう。

public class Main {
    public static void main(String[] args) {
        int age = "25";
        System.out.println(age);
    }
}

まとめ:「型」はJavaにとって非常に重要なルール

  • Javaでは変数・代入・戻り値などにおいて型の一致が求められる
  • 「Type mismatch」エラーは、型の不一致が原因
  • 対処法は「変数や戻り値の型を確認し、一致させる」こと

このエラーは、Javaの「型」の概念を理解する良いきっかけにもなります。
あせらず、ひとつひとつの型に注目してコードを見直していきましょう。

次回は、「null pointer exception(ヌルポ)」をテーマに解説していきます!
ますます「エラーに強いJava初心者」になっていきましょう!

コメント

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