Javaで最も多いエラーNullPointerExceptionの解決方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaの主なエラーと解決方法について解説しています。ここではNullPointerExceptionというエラーの内容とその対処法を学びます。サンプルコードで動作を確認しましょう。
TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。
Javaの主なエラーと解決方法について解説します。実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。
そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

今回は、Javaに関する内容だね!

どういう内容でしょうか?

主なエラーと解決方法について詳しく説明していくね!

お願いします!
Javaの主なエラーと意味
javaプログラムを実行する中で、最も発生する頻度が高いのがNullPointerExceptionというエラーです。NullPointerExceptionは参照がない値にアクセスしようとした際に発生します。
たとえば下記のようなコードを実行したとします。
public class NullSample { public static void main(String[] args) { printLength("りんご"); } static void printLength(String str) { int i = str.length(); System.out.println(str + "は" + i + "文字"); } }
printLength(String str)メソッドは引数で渡された文字列と、その文字数をコンソール出力します。上記サンプルの場合メインメソッドから”りんご”という引数を与えてメソッドを呼び出しているので
実行結果は
りんごは3文字
となります。
次にメインメソッドで引数をnullとして実行してみます。
public class NullSample { public static void main(String[] args) { printLength(null); } static void printLength(String str) { int i = str.length(); System.out.println(str + "は" + i + "文字"); } }
こちらのコードは実行時にエラーとなります。コンソールに下記のようなエラーが出ます。
Exception in thread "main" java.lang.NullPointerException at poi.NullSample.printLength(NullSample.java:13) at poi.NullSample.main(NullSample.java:7)
ここで発生しているのがNullPointerExceptionです。
エラーを見るとjava.lang.NullPointerExceptionの直後に、at poi.NullSample.printLength(NullSample.java:13)と出力されています。
これはNullSample.javaの13行目の処理で当エラーが発生したことを表しています。プログラムでいうと
int i = str.length();
の部分です。nullであるstrオブジェクトのlength()メソッドを実行しようとしている部分です。
主なエラーの解決方法
解決方法として、printLength(String str) の処理の中で、引数に対してlength()メソッドを動かす前に
引数がnullでないかどうかのチェックを行います。
チェックしてnullでない場合のみ、length()メソッドを動作させます。コードは下記のようになります。
public class NullSample { public static void main(String[] args) { printLength(null); } static void printLength(String str) { if (null == str) { System.out.println("nullです。"); } else { int i = str.length(); System.out.println(str + "は" + i + "文字"); } } }
実行結果は
nullです。
となり、NullPointerExceptionの発生を回避することができました。
監修してくれたメンター
長屋雅美
独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは、初心者でも最短4週間でJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。