NullPointerExceptionはJava初心者の「あるある」エラー
Javaを学び始めてしばらくすると、ほぼ必ず一度は遭遇するエラーがあります。
Exception in thread "main" java.lang.NullPointerException「何もないものを使おうとした」というエラーで、初心者はもちろん、ベテランエンジニアでも遭遇することがある定番のエラーです。
このエラーの仕組みを理解しておくと、原因の特定と修正がぐっと速くなります。
NullPointerExceptionとは
null とは、「何も参照していない状態」を表す特別な値です。
変数に null が入っているとき、その変数のメソッドを呼び出したりフィールドにアクセスしようとすると、Javaは「参照先がない」と判断してNullPointerExceptionを投げます。
よくある原因パターン
パターン① 変数を宣言しただけで初期化していない
String name; // 宣言のみ、初期化していない
System.out.println(name.length()); // NullPointerException!対処法: 宣言時に初期値を代入する。
String name = ""; // 空文字で初期化
System.out.println(name.length()); // OK → 0パターン② メソッドがnullを返している
public String getName() {
return null; // nullを返している
}
String name = getName();
System.out.println(name.length()); // NullPointerException!対処法: 使う前にnullチェックをする。
String name = getName();
if (name != null) {
System.out.println(name.length());
}パターン③ 配列の要素が初期化されていない
String[] names = new String[3]; // 要素はすべてnull
System.out.println(names[0].length()); // NullPointerException!対処法: 配列の各要素に値を代入してから使う。
String[] names = new String[3];
names[0] = "田中";
System.out.println(names[0].length()); // OK → 2パターン④ オブジェクトの初期化を忘れている
List<String> list; // 宣言のみ
list.add("Java"); // NullPointerException!対処法: newでインスタンスを生成する。
List<String> list = new ArrayList<>(); // インスタンス化
list.add("Java"); // OKエラーメッセージの読み方
NullPointerExceptionが出たとき、スタックトレースに注目しましょう。
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:8)Main.java:8 は「Main.javaの8行目で起きた」という意味です。まずその行を確認し、どの変数がnullになっているかを特定するのが解決への近道です。
Java 14以降はエラーメッセージが親切になった
Java 14から、NullPointerExceptionのメッセージがより詳しくなりました。
Cannot invoke "String.length()" because "name" is null「nameがnullだからlength()を呼び出せない」と具体的に教えてくれます。Java 14以降を使っている場合は、このメッセージを手がかりに原因を特定しましょう。
NullPointerExceptionを防ぐ習慣
- 変数は宣言と同時に初期化する
- メソッドの戻り値がnullになり得るか意識する
- 外部から受け取った値は使う前にnullチェックをする
- nullを返すメソッドを作らず、空文字や空のリストを返す設計にする
最初はnullチェックを書くのを忘れがちですが、「この変数はnullになり得るか?」を意識する習慣をつけるだけで、NullPointerExceptionの発生頻度はぐっと減ります。
Javaの基礎をしっかり学びたい方へ
NullPointerExceptionのようなエラーは、Javaの基礎をしっかり理解することで格段に減らせます。
学びテック のJava基礎コースでは、変数・オブジェクト・例外処理といった基礎を、演習問題を解きながら体系的に学べます。
- ✅ ブラウザ上でコードを書いて実行できる
- ✅ 演習問題で理解度を確認しながら進められる
- ✅ 疑問は講師に直接質問できる(個別・グループ講義あり)
まとめ
- NullPointerExceptionは「nullの変数にアクセスしようとした」ときに発生する
- スタックトレースの行番号から原因箇所を特定する
- 変数の初期化・nullチェックの習慣で防げる
- Java 14以降はエラーメッセージがより詳しくなっている


