分析以下代码:
class Test {
public static void main(String[] args) {
int[] x = {1, 2, 3, 4};
int[] y = x;
x = new int[2];
for (int i = 0; i < y.length; i++) {
System.out.print(y[i] + " ");
}
}
}
- A.程序显示 1 2 3 4
- B.程序显示0 0
- C.程序显示0 0 3 4
- D.程序显示0 0 0 0
下面的代码答案是A,为什么不是B?
最佳答案
假设 {1, 2, 3, 4}
的内存地址为 M
。
将 x
分配给 {1, 2, 3, 4}
时,您正在分配对 {1, 2, 3, 4}
,即 x
将指向 M
。
当分配 y = x
时,y
将引用 M
。
之后,您要更改 x
指向的引用,假设它是 N
。
因此,打印时,y
指向M
(即{1, 2, 3, 4}
的地址),但是 x
持有对 N
的引用(即 new int[2]
)。区别就在这里。
关于java - x =new int[2]; 是怎么做到的?在这个java代码中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34462460/