Null Pointer Exception の原因と解決策の分析
はじめに: プログラム開発の過程で、よくある例外として Null Pointer Exception が発生します。 null オブジェクトのプロパティにアクセスするか、null オブジェクトのメソッドを呼び出すと、null ポインター例外がスローされます。この記事では、null ポインター例外の原因を分析し、対応する解決策を提供し、具体的なコード例を示します。
1. Null ポインター例外の原因
1.1 オブジェクトはインスタンス化されていません
初期化されていないオブジェクトを操作すると、Null ポインター例外がスローされます。たとえば、次のコード スニペット:
String str; System.out.println(str.length());
str
が初期化されていないため、length()
メソッドが呼び出されるときに null ポインタ例外がスローされます。
1.2 オブジェクトには値 null
が割り当てられます。オブジェクトの値を null
に割り当てると、操作時に null ポインタ例外がスローされます。は発表された。たとえば、次のコード スニペット:
String str = null; System.out.println(str.length());
str
には値 null
が割り当てられているため、length()# が実行されると null ポインタがスローされます。 ## メソッドは異常と呼ばれます。
配列要素を操作するとき、要素が空の場合、null ポインタ例外がスローされます。たとえば、次のコード スニペット:
String[] arr = new String[3]; System.out.println(arr[0].length());
arr[0] が空であるため、
length() メソッドが呼び出されるときに null ポインタ例外がスローされます。 。
最も簡単な解決策は、オブジェクトが使用前に正しくインスタンス化されていることを確認することです。たとえば、前のコード スニペットの場合、Null ポインター例外は次の方法で解決できます。
String str = ""; System.out.println(str.length());
str を空の文字列に初期化し、
length() メソッドを呼び出します。このように null ポインタ例外はスローされません。
オブジェクト操作を実行する前に、空のオブジェクトに対する操作を避けるために null 値判定を追加できます。たとえば、前のコード スニペットの場合、null ポインター例外は次の方法で解決できます。
String str = null; if (str != null) { System.out.println(str.length()); }
str が存在しない場合にのみ
length() を呼び出す条件を追加します。 null メソッドを使用すると、null ポインター例外のスローを回避できます。
配列要素が空の場合、null 判定演算を使用して null ポインタ例外を回避できます。たとえば、前のコード スニペットの場合、null ポインター例外は次の方法で解決できます。
String[] arr = new String[3]; if (arr[0] != null) { System.out.println(arr[0].length()); }
null であるかどうかを確認します。 null ポインタ例外のスローを避けるために、操作を実行する前に要素が null でない場合に実行します。
public class NullPointerExceptionDemo { public static void main(String[] args) { String str = null; if (str != null) { System.out.println(str.length()); str = ""; System.out.println(str.length()); String[] arr = new String[3]; if (arr[0] != null) { System.out.println(arr[0].length()); } } } }
str値を
null に割り当て、null 操作による null ポインター例外を回避し、
str を空の文字列に初期化し、
length() を呼び出します。メソッドを再度実行すると、これ以上例外はスローされなくなります。最後に、安全なアクセスを確保するために配列要素に対して null 操作を実行します。
以上がNULL ポインタ例外の原因と解決策を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。