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の大きな整数にはL、floatの小数にはFを付けて、値の種類を明示します。
変数名のエラーも多い
Syntax error on token "1", delete this token The local variable q3 may not have been initialized
変数名の先頭に数字は使えません。また、ローカル変数は値を入れる前に表示しようとするとエラーになります。変数名は小文字の英字で始め、firstCountのようなlowerCamelCaseにすると読みやすくなります。
データ型・リテラル・初期化の早見表
型の不一致を直すときは、左側の型、右側のリテラル、初期化されているかを順番に確認します。
| 型 | 入れられる値の例 | リテラルの書き方 | 初期化の例 | よくあるエラー |
|---|---|---|---|---|
int | 整数 | 50 | int score = 80; | "80"は文字列なので入れられない |
long | 大きい整数 | 3000000000L | long count = 3000000000L; | 大きい整数にLを付け忘れる |
float | 小数 | 3.14F | float rate = 3.14F; | 3.14は基本的にdoubleとして扱われる |
double | 小数 | 3.14 | double price = 120.5; | intに小数を入れようとする |
char | 1文字 | 'A' | char rank = 'A'; | "A"は文字列なので入れられない |
boolean | 真偽値 | true / false | boolean 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);
}
}
確認問題
char letter = "A";がエラーになる理由を説明してください。long value = 3000000000;を正しく直してください。- 変数名
1stCountが使えない理由を説明してください。
演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。先に手を動かしてから確認することをおすすめします。
あわせて読みたい関連記事
- Javaの変数・配列・Scanner入力とは?初学者向けに関係を整理
- Javaの配列インデックスとは?0始まり・更新・参照を初心者向けに解説
- JavaのScannerで入力するには?配列でリストを作る練習
まとめ
変数とリテラルのエラーは、型、引用符、末尾のLやF、変数名、初期化の有無を順番に見ると整理しやすくなります。エラー文を丸暗記するより、左側の型と右側の値を見比べる習慣を付けましょう。