java中的数组和对象
我在数组和对象中遇到问题。。 像这样考虑:
dog[] mydog = new dog[1];
mydog[0]= new dog();
mydog.name= "Bart!";
此行使用mydog在堆中创建一个对象
和mydog[0].name = "Bart!";
是的。好的
但是 我的狗[0]。所有者=“jay”
我的问题是我们在堆中创建了一个对象。而且已经。把狗的名字储存在里面。而不是我们如何在里面多存一个名字“jay”。它
请举例说明
你可以在下面搜索框中键入要查询的问题!
我在数组和对象中遇到问题。。 像这样考虑:
dog[] mydog = new dog[1];
mydog[0]= new dog();
mydog.name= "Bart!";
此行使用mydog在堆中创建一个对象
和mydog[0].name = "Bart!";
是的。好的
但是 我的狗[0]。所有者=“jay”
我的问题是我们在堆中创建了一个对象。而且已经。把狗的名字储存在里面。而不是我们如何在里面多存一个名字“jay”。它
请举例说明
# 1 楼答案
实际上
行不通
你需要做的是
这样就可以引用数组中的单个元素
# 2 楼答案
你创建了一系列狗,其中有一只狗。但是,dog数组不存储属性,而是存储dog。每只狗都会储存你分配给它的属性,比如名字和主人
# 3 楼答案
编辑:
对不起,我以前可能误解了你的问题。 我画了一张堆栈和堆应该是什么样子的图表。希望你能读到它(可能下载并放大)有助于理解。 在堆栈中,有一个指向狗对象数组的指针(mydog)。数组对象在堆中,它存储指向dog对象的指针(这里只有一个,因为长度为1),我还显示了数组框上方的数组索引和数组的长度变量
我假设你的狗课看起来是这样的:
提示:类名通常以大写开头
旧答案,可以帮你一些提示
堆中的dog实例有一个指向字符串对象的指针,当然总是在堆中。 有了这句话,你就是:
创建一个新的字符串对象,上面写着“Bart”
更改“name”指针以指向此新字符串,而不是新字符串
因此,在中不再存储一个名称“jay”,而是将旧的“Bart”对象替换为新的“jay”对象(来自dog对象)
无论如何都要小心,因为您只是在修改dog对象中的指针。 这意味着,如果你在其他地方有另一个指针,指向那个“bart”字符串,它不会改变。相反,如果没有其他指针指向旧的“Bart”字符串,那么“Bart”最终将被垃圾收集器收集和删除
# 4 楼答案
这很可能是MyDog类的结构
现在,每个MyDog对象由2个字符串对象(所有者和字符串)组成。所以,这两个字符串对象都是MyDog疯狂游戏的一部分