java.lang.nullpointerexceptionがスローされるケース
プログラムでこのエラーが発生することがよくあります。java.lang.NullPointerException.このバグは、次の場合に値のないヌルオブジェクトを使用しようとすると発生します。- null メソッドインスタンスを呼び出す
- ヌルオブジェクトのインスタンスにアクセスまたは変更します。
- この例外はスローすることを目的としています。
- ヌル配列の長さを呼び出すとき。
- 配列などのヌル位置にアクセスする場合
- ヌル・オブジェクトを同期する場合、または同期ブロック内で使用する場合。
オブジェクトは、java
オブジェクトはクラスインスタンスまたは配列であり、参照はこれらのオブジェクトへのポインタであり、null参照は参照 を no object.変数を宣言すると、Java は x 変数を 0 に設定し、そのオブジェクトを参照するポインタが作成されます。たとえば、次のコードでは、変数 x:
int x;この例では、変数 x はデフォルトで 0 に設定され、2 行目の値 5 は x が指すメモリ位置に書き込まれます。Javaはプログラマがメモリボックスを操作することを禁じており、オブジェクトのメソッドにのみアクセスでき、メモリの場所にはアクセスできません。
x = 5;
ケースまたは NullPointerExceptionがスローされる
1) nullPoint dot = null;
dot.getX();
スレッド "main" の例外 java.lang.NullPointerException2) null オブジェクトのインスタンスへのアクセスまたは変更。
at Test.main(Test.java:27)
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();
}
char[] ch = null;5) 配列などのヌル位置にアクセスする場合
int length = ch.length;
ヌル配列のボックスにアクセスする例 /><
char[] ch = null;
char c = ch[0];
6) null
同期すると、次のようになります NullPointerException オブジェクトを同期化しようとしている場合 null または同期ブロック内に配置
Thread th=null;
synchronized(th){
System.out.print("このスレッドは同期されています");
}
予防策は何ですか
- この種の例外を回避する最善の方法 オブジェクトを自分で作成しなかった場合 は、オブジェクトがゼロであるかどうかをチェックすることです。コードは次のように記述する必要があります:
void display(String phrase){オブジェクトがnullであるため、display()プロシージャでは何も起こらないため、この解決策は最適ではない場合があります。
//文がnullでないかチェック
if(phrase!=null)
System.out.print(phrase);
}
String string="";
//宣言
Thread[] th=new Thread[3];
//初期化
th[0]=new Thread();
th[1]=new Thread();
th[2]=new Thread();