コードをスムーズに実行するには例外が必要であり、プログラマーに解決すべきエラーを知らせます。この記事では、JavaでのNull PointerExceptionに次の順序で焦点を当てます。
JavaのNullポインタ例外とは何ですか?
Javaのnullポインタ例外は、実行時の例外です。 Javaの世界では、特別なnull値がオブジェクト参照に割り当てられます。ヌルポインタ例外は、プログラムがnull値を持つオブジェクト参照を使用しようとしたときに発生します。次のいずれかになります。
データサイエンスとは何ですか?
- nullオブジェクトから特定のメソッドを呼び出すこと。
- nullオブジェクトのフィールドにアクセスまたは変更します。
- nullの長さを、配列であるかのように考慮することによって。
- nullオブジェクトのスロットにアクセスまたは変更している間。
- スロー可能な値のようにnullをスローします。
- nullオブジェクトを介して同期しようとしています。
なぜnull値が必要なのですか?
Nullは、Javaで使用される一意の値です。 Nullは、参照変数に値が割り当てられていないことを示すために使用されます。 nullの主な用途は、リンクリストやツリーなどのデータ構造の実装にあります。他のいくつかのアプリケーションには、nullオブジェクトパターンとシングルトンパターンが含まれます。シングルトンパターンは、クラスの1つのインスタンスのみを開始できることを指定し、オブジェクトへのグローバルアクセスポイントを提供することを目的としています。
クラスのインスタンスを少なくとも1つ作成するための最良かつ簡単な方法は、すべてのコンストラクターをプライベートとして宣言することです。次に、クラスの一意のインスタンスを返すパブリックメソッドを作成します。
// randomUUID関数を使用します。 import java.util.UUID importjava.io。* class Singleton {//ここでは、singleとIDの値をnullに初期化します。 private static Singleton single = null private String ID = null private Singleton(){/ * Singletonクラスの新しいインスタンスの作成を防ぐために、プライベートにします。 * ///ランダムIDを作成ID = UUID.randomUUID()。toString()} public static Singleton getInstance(){if(single == null)single = new Singleton()return single} public String getID(){return this.ID}} //ドライバーコードpublicclass TestSingleton {public static void main(String [] args){Singleton s = Singleton.getInstance()System.out.println(s.getID())}} //
出力:
上記の例は、シングルトンクラスの静的インスタンスです。インスタンスは、Singleton getInstanceメソッド内で最大1回初期化されます。
Javaアルゴリズムとデータ構造
JavaでNullPointer Exceptionを回避するにはどうすればよいですか?
JavaでのNullPointer Exceptionを回避するには、オブジェクトを使用する前に、すべてのオブジェクトが正しく初期化されていることを確認する必要があります。参照変数を宣言するときは、オブジェクトがnullでないことを確認する必要があります。また、オブジェクトからメソッドまたはフィールドを要求する前に確認する必要があります。以下は、その問題を克服するための対応するソリューションに関するいくつかの問題です。
//メソッドの呼び出しをデモンストレーションするプログラム// nullでNullPointerExceptionが発生しますimportjava.io。* class GFG {public static void main(String [] args){//文字列変数をnull値で初期化String ptr = null // ptr.equals nullまたは正常に機能するかどうかを確認します。 try {//このコード行はNullPointerExceptionをスローします// ptrがnullであるためif(ptr.equals( 'gfg'))System.out.print( 'Same')else System.out.print( 'Not Same')} catch(NullPointerException e){System.out.print( 'NullPointerException Caught')}}}
出力:
メソッドの引数をチェックし続ける
新しいメソッドの本体を実行する前に、null値の引数を確認し、メソッドの実行を続行する必要があることを常に覚えておいてください。引数が適切にチェックされている場合に限ります。それ以外の場合は、「IllegalArgumentException」をスローし、渡された引数に問題があることを呼び出すメソッドを呼び出します。
//パラメータを使用する前に//パラメータがnullかどうかをチェックするプログラム。 import java.io. * class GFG {public static void main(String [] args){//文字列sは空の文字列を設定し、getLength()を呼び出しますString s = '' try {System.out.println(getLength(s) )} catch(IllegalArgumentException e){System.out.println( 'IllegalArgumentException catched')} //文字列を値に設定してgetLength()を呼び出すs = 'GeeksforGeeks' try {System.out.println(getLength(s) )} catch(IllegalArgumentException e){System.out.println( 'IllegalArgumentException catched')} // sをnullに設定し、getLength()を呼び出すs = null try {System.out.println(getLength(s))} catch( IllegalArgumentException e){System.out.println( 'IllegalArgumentException catched')}} //文字列sの長さを返す関数。 sがnullの場合、// IllegalArgumentExceptionをスローします。 public static int getLength(String s){if(s == null)throw new IllegalArgumentException( '引数をnullにすることはできません')return s.length()}}
出力:
三項演算子の使用
三項演算子は、NullPointerExceptionを回避するために使用されます。ブール式がチェックされ、式がtrueの場合はvalue1が返され、そうでない場合はvalue2が返されます。ヌルポインタを処理するための三項演算子を使用できます。右の画像は対応する出力です。
// NullPointerExceptionを回避するために//三項演算子を使用できることを示すJavaプログラム。 import java.io. * class GFG {public static void main(String [] args){// null値でString変数を初期化Stringstr = null String message =(str == null)? '':str.substring(0,5)System.out.println(message)str = 'Edureka_Java_Blog'メッセージ=(str == null)? '':str.substring(0,5)System.out.println(message)}}
出力:
Edurek
これで、JavaでのNull PointerExceptionが終了します。 Null PointerExceptionについてご理解いただけたでしょうか。
チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。
Javaのjframeとは
質問がありますか?この「JavaでのNullPointer Exception」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。