作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以解释一下为什么第二个输出不为空吗?我理解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/
我是一名优秀的程序员,十分优秀!