2012-03-20 10 views
-3

私はこのコードを見て、次の質問に答えなければならない試験を受けました。このコードによって作成されたどのように多くのオブジェクト次のコードで作成されるオブジェクトの数はいくつですか?

Object a,b,c,d,e; 
e= new Object(); 
b=a=e; 
e= new Object(); 

可能な答えは、これらのものだった:

  • 不正コード2が右answeだったように見えます

が、私なぜか分からない - 私は5つのオブジェクトを見る(abcde)ここにはいませんか?

+3

宿題をそのようにマークし、あなたの答えと思考のプロセスを説明してください**前に聞いてきます。 – Viruzzo

+0

宿題を手伝ってうれしく思います。自分の答えが最初であることがわかったら、さらに多くを学ぶでしょう。 – halfer

+0

これは宿題ではありませんが、これは上向きの質問であると確信しています。私はここで答えを探して終了したので、comのJAVAテスト: –

答えて

4

2つのオブジェクトがあなたがnew Object()への2つの呼び出しを持っているので、2コードが有効になります

Object a,b,c,d,e; // only declares a to e as Object (at this time they are not initialized) 
e= new Object(); // 1st e refers to a newly created object 
b=a=e;   // b and a refer both to the same object as e 
e= new Object(); // 2nd, this instantion and assignment does not 
       // change a or b, a and b still refer to the 1st created Object 
+0

あなたの3行目のコメントは誤解を招きます。 bとaは両方ともeと同じ値を持ちます - それらはすべて同じオブジェクトを参照します。それはaのようではなく、bはeに本当に関係しています。彼らはその時点で*同じ価値を持っている*。特に、eの値を変更すると、aまたはbの値は変更されません。 –

+0

@JonSkeetありがとう、私は今、より明確に表現したいと思う。 – stacker

+0

いいえ、まだ間違っています - bとa *はeを参照していません。それらは、eが参照するのと同じオブジェクトを参照します。 –

2

をインスタンス化されます。

1

newは、オブジェクトを「作成」するためのキーワードです。 2つのオブジェクトが作成されるので、オブジェクトが2つあります。

1

2つの異なるオブジェクト。

最初はe= new Object();の最初に作成され、参照はabにコピーされます。 これはe,a,bポイント同じオブジェクト

に第二の目的は、だから、二e= new Object();

上で作成されていることを意味し、あなたが持っている:

a,b --> points to Object "one" 
e --> point to Object "two" 
0

はい、2つの異なるオブジェクトが作成されます。

これは、hashCode()の結果でも確認できます。

objが初めて作成されたときには、ba、およびeがそのオブジェクトを指しています。

新しいオブジェクトがe = new Object()で作成された二回目、bながらeは現在、このオブジェクトを指している、とaはまだ古いオブジェクトを指しています。

関連する問題