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にすると読みやすくなります。

自分で試す練習

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

ファイル名: 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、変数名、初期化の有無を順番に見ると整理しやすくなります。エラー文を丸暗記するより、左側の型と右側の値を見比べる習慣を付けましょう。

シェアする