我参加了考试,我应该查看这段代码并回答以下问题。
Object a,b,c,d,e; e= new Object(); b=a=e; e= new Object();
此代码创建了多少个对象?
可能的答案是这些:
看起来2是正确的回答,但我不明白为什么 - 我看到5个对象(a
,b
,c
,d
,{ {1}})在这里,不是吗?
答案 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();
上创建的,然后,引用被复制到a
和b
。
这意味着e,a,b
指向同一个对象
第二个对象是在第二个e= new Object();
所以,你有:
a,b --> points to Object "one"
e --> point to Object "two"
答案 4 :(得分:0)
是的,将创建两个不同的对象。
您也可以通过查看hashCode()
的结果来查看此内容。
第一次创建obj
时,b
,a
和e
指向该对象。
第二次,当使用e = new Object()
创建新对象时,e
现在指向此对象,而b
和a
仍然指向旧物件。