gpt4 book ai didi

java - 构造函数中令人困惑的 Java 分配引用

转载 作者:行者123 更新时间:2023-12-02 05:20:49 25 4
gpt4 key购买 nike

有人可以解释一下为什么第二个输出不为空吗?我理解999是有引用值(value)的。

public class Set {

int e[] = null;

public Set(int[] e ) {
this.e = e;
}

public void printSet() {
for(int i = 0 ; i < e.length; i++) {
System.out.println(e[i]);
}
}


public static void main(String[] args) {
int[] v = {1,2,3,4,5};

Set m = new Set(v);
m.printSet();

v[0] = 999;
v = null;

System.out.println("-----------------");

m.printSet();


}

}

输出

1
2
3
4
5
-----------------
999
2
3
4
5

最佳答案

由于 e 仍然具有对数组的引用,因此将 v 引用清空不会导致数组无法访问。

public Set(int[] e) {
this.e = e; // <-- reference to the array
}

v[0] = 999;
v = null; // <-- now v doesn't refer to the array, but e still does.

关于java - 构造函数中令人困惑的 Java 分配引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534727/

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