以下代码创建了多少个对象?

时间:2012-03-20 14:28:26

标签: java object

我参加了考试,我应该查看这段代码并回答以下问题。

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

此代码创建了多少个对象?

可能的答案是这些:

  • 2
  • 5
  • 4
  • 无效代码

看起来2是正确的回答,但我不明白为什么 - 我看到5个对象(abcd,{ {1}})在这里,不是吗?

5 个答案:

答案 0 :(得分:4)

将实例化两个对象

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

答案 1 :(得分:2)

您有new Object()的2次通话,因此2.代码看起来有效。

答案 2 :(得分:1)

new是“创建”对象的关键字。有2个new个对象,因此创建了2个对象。

答案 3 :(得分:1)

两个不同的对象。

第一个是在第一个e= new Object();上创建的,然后,引用被复制到ab。 这意味着e,a,b 指向同一个对象

第二个对象是在第二个e= new Object();

上创建的

所以,你有:

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

答案 4 :(得分:0)

是的,将创建两个不同的对象。

您也可以通过查看hashCode()的结果来查看此内容。

第一次创建obj时,bae指向该对象。

第二次,当使用e = new Object()创建新对象时,e现在指向此对象,而ba仍然指向旧物件。