gpt4 book ai didi

java - 将对象存储在对象数组中

转载 作者:行者123 更新时间:2023-12-02 06:35:29 26 4
gpt4 key购买 nike

基本上我想将学生添加到类(class)列表中。假设我有以下代码

public class ClassList {

//Constructor methods...


private Student [] studList = new Student [20];

public boolean addStudent (Student newStudent)
{

studList[14] = newStudent;
}
}

studList[14] 是否添加对 newStudent 对象的引用或将该对象复制到 StudList[14] 学生对象中?

据我了解,当第二次调用方法 addStudent() 时,newStudent 对象将被删除。那么studList[14]会指向null吗?如果我希望 StudList[14] 在整个代码执行过程中持续存在怎么办?

抱歉,如果很难理解,我不知道如何更容易地解释我的查询...

最佳答案

Java 中有一条您必须牢记的基本规则:

访问对象的唯一方式是通过其引用。变量可以保存的唯一引用(*)。对于局部变量、参数、实例字段和静态字段来说也是如此:它们在这方面都是相同的。

对象本身永远不会“包含”在变量中。

这直接引出了您第一个问题的答案:

引用被复制到数组中(因为数组只能保存引用(*),而不能对象)。

这也意味着“newStudent 被删除”实际上并不是什么大问题:它只是对同一对象的另一个引用,如果它消失了,也不会发生什么事情。

现在,如果对给定对象的所有引用都被删除(或不再可达),那么该对象本身就有资格进行垃圾回收,但这并不是一件坏事,因为您无法访问无论如何,不​​再这样了。

(*) ...或原始值,但我们将在本次讨论中忽略它们。

关于java - 将对象存储在对象数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com