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

Java 以下代码创建了多少个对象?,java,object,Java,Object,我有一个考试,我应该看看这个代码并回答以下问题 此代码创建了多少个对象 可能的答案如下: 2. 5. 4. 无效代码 看起来2是正确的answe,但我不明白为什么——我在这里看到了5个对象a、b、c、d、e,不是吗?两个对象将被实例化 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 ne

我有一个考试,我应该看看这个代码并回答以下问题

此代码创建了多少个对象

可能的答案如下:

2. 5. 4. 无效代码
看起来2是正确的answe,但我不明白为什么——我在这里看到了5个对象a、b、c、d、e,不是吗?

两个对象将被实例化

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
您有2个对新对象的调用,所以有2个。代码看起来有效。

新建是创建对象的关键字。有两个新对象,因此创建了两个对象。

两个不同的对象

第一个是在第一个e=新对象上创建的;然后,引用被复制到a和b中。 这意味着e、a、b指向同一个对象

在第二个e=新对象上创建第二个对象

因此,你有:

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

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

您也可以通过查看hashCode的结果来检查这一点

第一次创建obj时,b、a和e都指向该对象


第二次,当用e=new object创建新对象时,e现在指向这个对象,而b和a仍然指向旧对象。

标记作业,并在开始提问之前解释你的答案和思考过程。很乐意帮助完成作业,但是-1表示提问时不先尝试。如果你首先看到自己的答案,你会学到更多。这不是家庭作业,但我相信这是upwork.com JAVA test的一个问题,因为我在这里搜索答案:DYour第三行评论有误导性。b和a都与e具有相同的值-它们都指向同一个对象。虽然a和b并不是真的和e有关;在那一点上,它们恰好具有相同的值。特别是,改变e的值不会改变a或b的值。不,这仍然是错误的-b和a不指e。它们指的是e所指的同一个对象。
a,b --> points to Object "one"
e --> point to Object "two"