のようなオブジェクトを作成することの違いは何ですか
OverFlow a = new OverFlow();
OverFlow a;
2 番目のケースでは、オブジェクトは作成されません。a
変数は初期化されていません。
の
OverFlow a
bit はどちらの場合も同じ意味を持ちます。つまり、クラス(またはサブクラス)a
のインスタンスへの参照を格納するという変数を作成します。OverFlow
最初のケースでは、新しいオブジェクトが作成され、そのオブジェクトを指すように参照が初期化されます。
2 番目のケースでは、参照は初期化されずに残りnull
ます。
OverFlow a;
等しい
OverFlow a = null;
OverFlow a;
オブジェクト (つまり、使用できるインスタンス) を作成しません。a
タイプの変数を定義するだけですが、OverFlow
に割り当てられnull
ます。したがって、それを使用しようとすると、NullPointerException が発生します。コンパイラによっては、「初期化されていない」変数の警告が表示される可能性も高くなります。
OverFlow a = new OverFlow();
使用可能な実際のオブジェクト (null 以外) を作成することを除いて、同じことを行います。
new OverFlow();
クラスOverFlowのインスタンスを実際に作成しますが、
OverFlow a;
単なる宣言です。
最初のものでは、「a」は新しく構築された OverFlow オブジェクトの値を持ちます。
2 番目のものでは、null です。
新しいオブジェクトとして定義せずにオブジェクトを作成すると、初期化されません (コンストラクターも呼び出されません)。try-catch-block 内でオブジェクトを作成するには、2 番目のバージョンのみを使用してください。
基本的、
OverFlow a;
コンパイラに、「最終的にオーバーフロー型の変数が発生するので、それに備えてください」と伝えます。
OverFlow a = new Overflow();
変数を格納するために必要なメモリを実際に割り当て、そのコンストラクタを呼び出します