icon
icon

Javaで最も多いエラーNullPointerExceptionの解決方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaの主なエラーと解決方法について解説しています。ここではNullPointerExceptionというエラーの内容とその対処法を学びます。サンプルコードで動作を確認しましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

長屋雅美

SE歴11年。銀行、証券会社、出版社等のシステム、Webアプリを構築。講師歴は5年、メイン言語はJavaです。

今回はJavaで最も多いエラーNullPointerExceptionの解決方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

1時間でできる無料体験!

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

お願いします!

 

Javaの主なエラーに関して

Javaでアプリケーションを作成していざ動かしてみようとした時に、エラーが発生してうまく動かないということがありますよね。

Javaの実行またはデバッグ時のエラーは、大きく分けて以下2つのエラーが発生する可能性があります。

  • コンパイルエラー
  • ランタイムエラー

 

コンパイルエラーはアプリを動かすための前準備で発生するエラーです。

以下の記事に詳しく記載がありますので確認してみましょう。

よくあるエラーも紹介!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()メソッドを実行しようとしている部分です。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

主なエラーの解決方法

解決方法として、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 + "文字");

    }

  }

}

 

実行結果は以下の通りとなり、NullPointerExceptionの発生を回避することができました。

nullです。

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

執筆してくれたメンター

長屋雅美

独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。
JavaやC♯、shellscriptを用いた開発を主に担当し、テックアカデミーではJavaコースを担当しています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

分かりました。ありがとうございます!

 

Javaを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのJavaコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaやServletの技術を使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する