【Java入門】NullPointerExceptionとその回避方法

こんにちは!フリーランスの長野です。

nullって処理していますか?null処理を行わなければ、NullPointerExceptionの例外が発生してプログラムが途中で止まってしまうことがよくあります。

そこでこの記事では、NullPointerExceptionについて

  • NullPointerExceptionとは?
  • NullPointerExceptionの回避方法
  • Optionalを使う方法

など基本的な内容から、応用的な内容についても解説していきます。

今回はNullPointerExceptionについて、わかりやすく解説します!

NullPointerExceptionとは?

NullPointerExceptionとは、null値の参照型変数を参照しようとした時に発生する例外です。

そもそもnullとは?

そもそもnullとは何か簡単におさらいしましょう。

nullとは参照型変数の値が定義されていない状態です。

参照型変数の値は参照するメモリ上のアドレスとその参照先の値を示します。

この参照するメモリ上のアドレスとその参照先の値が定義されていない場合、参照型変数の値はnullとなります。ですのでnullからはどんなメソッドも呼び出すことができません。

もしnullでメソッドを実行させようとしてすると、NullPointerExceptionの例外が発生します。

サンプルコードで確認しましょう。

実行結果:

NullPointerExceptionの回避方法

さきほどのサンプルコードのようにnullからメソッドを呼び出したり、nullが許容されていないメソッドの引数にnull値の参照型変数を指定するとNullPointerExceptionの例外が発生して、プログラムが途中で止まる不具合が発生します。

それを回避する方法として参照型変数がnullかどうかif文を使って判定する方法がよく使われます。

サンプルコードで確認しましょう。

実行結果:

このサンプルコードでは、if文を使ってString型の参照型変数strがnullでない場合はstrからlengthメソッドを呼び出しstrの文字数を表示するようになっています。

そしてnullの場合はNullPointerExceptionの例外を発生させ、try-catch文でその例外を捕捉するようにしています。

try-catch文でthrowを使って例外を発生させる方法についてはこちらで詳しく解説していますので、ぜひ参考にしてください。

【納得Java】try-catch文のthrowとthrowsの使い分け
更新日 : 2019年4月2日

Optionalを使う方法

さきほどのサンプルコードのように参照型変数がnullかどうかif文を使って判定しました。

しかし、Java8からはOptionalクラスを使って記述することもできるようになりました。

Optionalについてはこちらで詳しく解説していますので、ぜひ参考にしてください。

JavaのOptionaとは?使い方をパターン別にわかりやすく解説
更新日 : 2019年6月4日

まとめ

ここでは、NullPointerExceptionについて説明しました。

文字列や配列、リストなどの参照型変数はNullPointerExceptionの例外に対して、if文やOptionalクラスを用いて処理を記述する必要があります。

慣れて使いこなせることができるように、この記事を何度も参考にして下さいね!

Javaカリキュラム無料公開中!

この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。

Java入門からアプリ開発まで未経験者が知っておくべき基礎を総ざらい
更新日 : 2019年5月22日

最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java1
LINEで送る
Pocket

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説