0

のようなオブジェクトを作成することの違いは何ですか

OverFlow a = new OverFlow();

OverFlow a;
4

8 に答える 8

2

2 番目のケースでは、オブジェクトは作成されません。a変数は初期化されていません。

于 2012-04-27T18:47:11.617 に答える
1

OverFlow a

bit はどちらの場合も同じ意味を持ちます。つまり、クラス(またはサブクラス)aのインスタンスへの参照を格納するという変数を作成します。OverFlow

最初のケースでは、新しいオブジェクトが作成され、そのオブジェクトを指すように参照が初期化されます。

2 番目のケースでは、参照は初期化されずに残りnullます。

于 2012-04-27T18:48:46.493 に答える
1
OverFlow a;

等しい

OverFlow a = null;
于 2012-04-27T19:03:54.277 に答える
0

OverFlow a;オブジェクト (つまり、使用できるインスタンス) を作成しません。aタイプの変数を定義するだけですが、OverFlowに割り当てられnullます。したがって、それを使用しようとすると、NullPointerException が発生します。コンパイラによっては、「初期化されていない」変数の警告が表示される可能性も高くなります。

OverFlow a = new OverFlow();使用可能な実際のオブジェクト (null 以外) を作成することを除いて、同じことを行います。

于 2012-04-27T18:49:06.607 に答える
0
new OverFlow();

クラスOverFlowのインスタンスを実際に作成しますが、

OverFlow a;

単なる宣言です。

于 2012-04-27T18:47:20.890 に答える
0

最初のものでは、「a」は新しく構築された OverFlow オブジェクトの値を持ちます。

2 番目のものでは、null です。

于 2012-04-27T18:47:52.437 に答える
0

新しいオブジェクトとして定義せずにオブジェクトを作成すると、初期化されません (コンストラクターも呼び出されません)。try-catch-block 内でオブジェクトを作成するには、2 番目のバージョンのみを使用してください。

于 2012-04-27T18:48:32.183 に答える
0

基本的、

OverFlow a;

コンパイラに、「最終的にオーバーフロー型の変数が発生するので、それに備えてください」と伝えます。

OverFlow a = new Overflow();

変数を格納するために必要なメモリを実際に割り当て、そのコンストラクタを呼び出します

于 2012-04-27T19:03:28.933 に答える