1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】NullPointerExceptionエラーの解説

Posted at

おはようございます:sunny:
駆け出しエンジニアのさわまりんです。

今回は NullPointerException について、初心者なりに解説します。

NullPointerExceptionエラーの詳細

NullPointerException は、
プログラムが「null」の値を使用しようとしたときに出るエラーです。

例として、
あなたは洞窟まで冒険に行くことにしました。そこに行くために地図が必要です。
そのため商人に地図をもらいましたが、その地図の内容が「null」となっていました。
この状況では、地図を参照しても、地図が存在しないのでエラーが発生してしまいます。
(※nullは何もない状態を指します)

このように何かを使用しようとしたり、参照しようとしたりする際に、
そのものがまだ存在していないと、このエラーが発生します。

それでは実際にコードを見ていきましょう。

エラーが出るコード

public class Main {

    public static void main(String[] args) {
        String string = null;
        if( string.isEmpty() ) {
            System.out.println("文字列の内容を表示");
        }
    }

}

どんな処理なのか整理してみましょう。
stringnull が入っています。
そして、もしも stringEmpty が入っていたら、
文字列を返す、という処理です。

そして実行してみると以下のエラーが出てきます。

// エラーの内容
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "<local1>" is null
	at Main.main(Main.java:5)

原因

エラーの内容を整理しましょう。ただ翻訳するだけでもOKです。

<local1>null なので
String.isEmpty() を呼び出すことはできない、と言っていますね。
この <local1> とは 変数string のことです。

そして、ここで最も重用なのが nullEmpty の違いです。

NULL :何もない状態
Empty 空文字:長さ0の文字列

もっとわかりやすく表現すると、

NULL :空気すら入れない、真空の箱、完全に何もないイメージ
Empty:空気だけが入っている箱

ここまで説明するとなんとなくわかってくる方もいるのではないでしょうか。

解決策2つ

nullempty は完全に異なるものだということが理解できました。
どうやらnullはnullと、emptyはemptyと、そろえる必要がありそうです。

例えば、stringに白紙の地図が入っていた時に、
もしも地図が存在していなかったら、文字列を出力する、
と記述しても意味がないですからね!

それでは hogehoge部分を揃えてみましょう。

String string = hogehoge;
        if( string == hogehoge )

修正後のコード①

public class Main {

    public static void main(String[] args) {
        String string = null;
        if( string == null ) {  // string.isEmpty() だった箇所
            System.out.println("文字列の内容を表示");
        }
    }

}

string.isEmpty()String string = null; に合わせて、
string == null に変更しました。

無事に文字列が表示できました。

// 実行結果
文字列の内容を表示

修正後のコード②

public class Main {

    public static void main(String[] args) {
        String string = "" ;  // String string = null; だった箇所
        if( string.isEmpty() ) {
            System.out.println("文字列の内容を表示");
        }
    }

}

String string = null;string.isEmpty() に合わせて、
String string = "" ; に変更しました。(空文字の状態)

無事に文字列が表示できました。

// 実行結果
文字列の内容を表示

おわりに

今回の説明で NullPointerException について、少しでも理解できたでしょうか。
もし誰かの助けになっていると幸いです。
ありがとうございました!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?