gpt4 book ai didi

java - 将数组元素设置为 String 对象时,元素是否引用该对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:38 26 4
gpt4 key购买 nike

摘自 Oracle 的官方 Java 教程,参见 question 2 here (我的样板)。

public static void main(String[] args) {

String[] students = new String[10];
String studentName = "Peter Smith";
students[0] = studentName;
studentName = null;

System.out.println(students[0]);

}

答案是 studentName 不符合垃圾回收条件,因为数组 students 仍然引用它。然而,最后一行打印“Peter Smith”,所以对我来说,students[0] 引用 studentName 似乎是错误的。有人可以解释一下吗?

最佳答案

我想借助图表逐步解释。

String studentName = "Peter Smith";

在第一行之后,在字符串池中创建了一个字符串,并且引用名称 studentName 指向它。

Part1

students[0] = studentName;

此时,另一个引用 students[0] 指向同一个对象,如下图所示。现在 2 个引用指向在内存中创建的同一个对象。

Part2

studentName = null;

在此之后,studentName 的引用将指向 null,即它不指向任何对象。但是 students[0] 的引用仍然指向创建的字符串对象 (Peter Smith)。

enter image description here

很明显,在第三条语句之后,一个引用指向 null 但另一个引用仍然指向创建的对象。因此该对象不符合垃圾回收条件。

希望对您有所帮助。

更新:抱歉,如果我弄乱了变量名。但我希望你明白这一点。

关于java - 将数组元素设置为 String 对象时,元素是否引用该对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35136846/

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