java.lang.nullpointerexceptionがスローされるケース

プログラムでこのエラーが発生することがよくあります。java.lang.NullPointerException.このバグは、次の場合に値のないヌルオブジェクトを使用しようとすると発生します。
  • null メソッドインスタンスを呼び出す
  • ヌルオブジェクトのインスタンスにアクセスまたは変更します。
  • この例外はスローすることを目的としています。
  • ヌル配列の長さを呼び出すとき。
  • 配列などのヌル位置にアクセスする場合
  • ヌル・オブジェクトを同期する場合、または同期ブロック内で使用する場合。
プログラムの実行を終了させた例外の原因を判別し、停止する手段は何ですか?

オブジェクトは、java

オブジェクトはクラスインスタンスまたは配列であり、参照はこれらのオブジェクトへのポインタであり、null参照は参照 を no object.
変数を宣言すると、Java は x 変数を 0 に設定し、そのオブジェクトを参照するポインタが作成されます。たとえば、次のコードでは、変数 x:

int x;
x = 5;
この例では、変数 x はデフォルトで 0 に設定され、2 行目の値 5 は x が指すメモリ位置に書き込まれます。Javaはプログラマがメモリボックスを操作することを禁じており、オブジェクトのメソッドにのみアクセスでき、メモリの場所にはアクセスできません。

ケースまたは NullPointerExceptionがスローされる

1) null
Point dot = null;
dot.getX();
スレッド "main" の例外 java.lang.NullPointerException
at Test.main(Test.java:27)
2) null オブジェクトのインスタンスへのアクセスまたは変更。
null 参照にアクセスすると例外が発生する NullPointerException:

Point dot = null;
dot.getX();
スレッド "main"の例外 test.main(Test.java:38)
3)でjava.lang.NullPointerException
throw null
throw を使用すると、引数がnullでないことが確認されます。 ゼロの場合は上昇します NullPointerException.

IOException nullException = null;
try {
throw nullException;
} catch (IOException e) {
e.printStackTrace();
}
4) null 配列を呼び出す場合 length

char[] ch = null;
int length = ch.length;
5) 配列などのヌル位置にアクセスする場合
ヌル配列のボックスにアクセスする例 /><
char[] ch = null;
char c = ch[0];
6) null
同期すると、次のようになります NullPointerException オブジェクトを同期化しようとしている場合 null または同期ブロック内に配置

Thread th=null;
synchronized(th){
System.out.print("このスレッドは同期されています");
}

予防策は何ですか

  • この種の例外を回避する最善の方法 オブジェクトを自分で作成しなかった場合 は、オブジェクトがゼロであるかどうかをチェックすることです。コードは次のように記述する必要があります:

    • void display(String phrase){
      //文がnullでないかチェック
      if(phrase!=null)
      System.out.print(phrase);
      }
      オブジェクトがnullであるため、display()プロシージャでは何も起こらないため、この解決策は最適ではない場合があります。
  • Eclipse や Netbeans などの IDE では、エラーの原因となった行の番号が表示されます。これは、エラーの種類を特定するための良い方法です。
  • 変数は、このコードの文字列のようなデフォルト値を持つことができます:

    • String string="";
  • 配列を宣言した後にチェックボックスを初期化します.

    • //宣言
      Thread[] th=new Thread[3];
      //初期化
      th[0]=new Thread();
      th[1]=new Thread();
      th[2]=new Thread();
  • ブール変数、カウンターを使用します,...などを使用してコードを最適化します.