创建新对象

时间:2014-06-18 08:46:27

标签: java object

我希望澄清我对java的了解:

basketball o, s;
s = new basketball();
o = s;

问题是创建了多少篮球对象,1或2?我运行了一些测试,并且认为只创建了一个对象,因为当我修改一个对象时,它反映在另一个对象中。对不起这个简单的问题,我只想澄清一下。

6 个答案:

答案 0 :(得分:0)

只创建了一个对象,但创建了2个引用。这里(basketball o, s;)o和s只是引用

但是当你做s = new basketball();时,就会创建一个对象

之后当你执行o=s时,你只是指向s但没有创建任何对象

查看this以查看创建对象的不同方法

答案 1 :(得分:0)

此处仅创建一个对象。 os只是同一个对象的句柄,正如你自己所说,修改一个会修改另一个(因为它们指向同一个对象)。

为了更清楚地理解,我建议您阅读How is a Java reference different from a C pointer?Is Java “pass-by-reference” or “pass-by-value”?

答案 2 :(得分:0)

是唯一创建的对象,然后o引用/指向内存中s的位置。

答案 3 :(得分:0)

你的变量o和s只是引用,当你使用运算符new AnyObject()然后你创建你的对象并且它返回引用指向左手边的whaterver变量。

所以你有2个引用和1个对象

并且两个引用变量都指向该对象

答案 4 :(得分:0)

由于你似乎对java很陌生,我会详细解释,

在java中编写此basketball o, s;时,表示您正在创建两个类型为basketball的引用变量。参考变量意味着什么,它是一种可以指向篮球实际对象的变量。

在java中写这个s = new basketball();意味着,你正在java中创建一个新对象,并将该对象分配给引用变量。这意味着您通过s

提供了对象的链接

想象一下,将参考变量作为遥控器,将对象(实例变量)作为电视。虽然所有的实际工作都是通过电视完成的,但整个电视的控制都是通过遥控器完成的。它是用户的电视链接。

所以执行o = s;时,您将s指向的对象(实例变量)分配给o。因此,现在so都指向同一个对象。因此,当对其中一个进行更改时,它显然会反映在另一个上。想象一下,它就像为同一台电视机安装了两个遥控器。

为了您的答案,只创建了一个对象,但创建了两个引用。

答案 5 :(得分:0)

篮球o,s;

s = new basketball(); //在此之后创建对象

o = s; //在这里你将第一个对象(存储在s中)的地址分配给o

假设s = new basketball(); 让我们取s的地址是23490.之后我们将这个地址值放入o中。所以o也指向同一个对象。 因此将创建一个对象。