Javaの変数エラーはなぜ起きる?型・リテラル・変数名を初心者向けに解説

最終更新日

Schoo Java入門 初級 講座イメージ

本記事は、Schooの「Java入門 初級【2026年版】」第2回「変数・配列・入力(Scanner)」を学んだあとに、変数とリテラルで起きやすいエラーを読み解くためのステップアップ学習記事です。

ただし、Schooを受講していない方でも、Javaの基本を学び始めたばかりであれば読み進められる内容にしています。

Schoo コースページ:Java入門 初級【2026年版】

変数エラーは型・名前・初期化から見る

変数の学習でつまずきやすいのは、書いた値の見た目とJavaが判断する型がずれる場面です。"50"は数字に見えても、ダブルクォーテーションで囲まれているため文字列です。

ファイル名: VarRulesDemo.java

public class VarRulesDemo {
    public static void main(String[] args) {
        int number = 50;
        String text = "ABC";

        System.out.println("初期値: number=" + number + ", text=" + text);

        number = 99;
        text = "XYZ";
        System.out.println("再代入: number=" + number + ", text=" + text);
    }
}

実行結果

初期値: number=50, text=ABC
再代入: number=99, text=XYZ

一度宣言した変数をもう一度使うときは、型を書き直しません。ただし、最初に決めた型そのものを途中で変えることはできません。

よくある型の不一致

Type mismatch: cannot convert from String to int
Type mismatch: cannot convert from String to char
Type mismatch: cannot convert from String to boolean

このようなエラーは、「右側の値を左側の型に入れられない」という意味です。まず、引用符の有無と型の名前を見比べます。

ファイル名: LiteralFixExample.java

public class LiteralFixExample {
    public static void main(String[] args) {
        int count = 50;
        char initial = 'A';
        boolean active = true;
        long population = 3000000000L;
        float rate = 3.14F;

        System.out.println(count);
        System.out.println(initial);
        System.out.println(active);
        System.out.println(population);
        System.out.println(rate);
    }
}

実行結果

50
A
true
3000000000
3.14

なぜLやFを付けるのか

Javaでは、整数リテラルは基本的にint、小数リテラルは基本的にdoubleとして扱われます。そのため、longの大きな整数にはLfloatの小数にはFを付けて、値の種類を明示します。

変数名のエラーも多い

Syntax error on token "1", delete this token
The local variable q3 may not have been initialized

変数名の先頭に数字は使えません。また、ローカル変数は値を入れる前に表示しようとするとエラーになります。変数名は小文字の英字で始め、firstCountのようなlowerCamelCaseにすると読みやすくなります。

データ型・リテラル・初期化の早見表

型の不一致を直すときは、左側の型、右側のリテラル、初期化されているかを順番に確認します。

入れられる値の例リテラルの書き方初期化の例よくあるエラー
int整数50int score = 80;"80"は文字列なので入れられない
long大きい整数3000000000Llong count = 3000000000L;大きい整数にLを付け忘れる
float小数3.14Ffloat rate = 3.14F;3.14は基本的にdoubleとして扱われる
double小数3.14double price = 120.5;intに小数を入れようとする
char1文字'A'char rank = 'A';"A"は文字列なので入れられない
boolean真偽値true / falseboolean passed = true;"true"は文字列なので入れられない
String文字列"ABC"String name = "Java";'ABC'のようにシングルクォートで複数文字を書く

変数エラー練習ツール

変数のエラーは、説明を読むだけだと分かったつもりになりやすいところです。この練習ツールでは、まず「この表示にするには何を入れるか」を選び、次に「型に合わない値」を直し、最後に「変数名として使えるか」を確認します。間違えてもよいので、選んでから判定結果を見て、型・リテラル・変数名のどこでずれたのかを確かめてください。

実行結果に合う値を選ぶ

次の実行結果になる組み合わせを選んでください。

score=80
rank=A
passed=true

選択後に判定できます。

コンパイルエラーを直す

エラーになる右側の値を、左側の型に合う形へ直してください。

int score = "80";
char rank = "A";
boolean passed = "true";

選択後に判定できます。

変数名チェッカー

Javaの変数名として使えるかを簡易チェックします。予約語、先頭の数字、空白、ハイフンなどは使えません。

入力後に判定できます。

自分で試す練習

次のコードは動きません。どこが型や書き方のルールに合っていないかを探して、動く形に直してみましょう。

ファイル名: VarFixPractice.java

public class VarFixPractice {
    public static void main(String[] args) {
        int score = "80";
        char rank = "A";
        boolean passed = "true";

        System.out.println(score);
        System.out.println(rank);
        System.out.println(passed);
    }
}

確認問題

  1. char letter = "A";がエラーになる理由を説明してください。
  2. long value = 3000000000;を正しく直してください。
  3. 変数名1stCountが使えない理由を説明してください。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。先に手を動かしてから確認することをおすすめします。

あわせて読みたい関連記事

まとめ

変数とリテラルのエラーは、型、引用符、末尾のLF、変数名、初期化の有無を順番に見ると整理しやすくなります。エラー文を丸暗記するより、左側の型と右側の値を見比べる習慣を付けましょう。

シェアする