我希望澄清我对java的了解:
basketball o, s;
s = new basketball();
o = s;
问题是创建了多少篮球对象,1或2?我运行了一些测试,并且认为只创建了一个对象,因为当我修改一个对象时,它反映在另一个对象中。对不起这个简单的问题,我只想澄清一下。
答案 0 :(得分:0)
只创建了一个对象,但创建了2个引用。这里(basketball o, s;
)o和s只是引用
但是当你做s = new basketball();
时,就会创建一个对象
之后当你执行o=s
时,你只是指向s
但没有创建任何对象
查看this以查看创建对象的不同方法
答案 1 :(得分:0)
此处仅创建一个对象。 o
和s
只是同一个对象的句柄,正如你自己所说,修改一个会修改另一个(因为它们指向同一个对象)。
为了更清楚地理解,我建议您阅读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
。因此,现在s
和o
都指向同一个对象。因此,当对其中一个进行更改时,它显然会反映在另一个上。想象一下,它就像为同一台电视机安装了两个遥控器。
为了您的答案,只创建了一个对象,但创建了两个引用。
答案 5 :(得分:0)
s = new basketball(); //在此之后创建对象
o = s; //在这里你将第一个对象(存储在s中)的地址分配给o
假设s = new basketball(); 让我们取s的地址是23490.之后我们将这个地址值放入o中。所以o也指向同一个对象。 因此将创建一个对象。