Mas*_*shi 5 java arrays pointers memory-management reference
public static void main(String[]args) {
int[] x = {1, 2, 3, 4};
int[] y ;
y = x;
x[1] = 11;
x = new int[2];
x[0]=99;
for (int i = 0; i < y.length; i++)
System.out.print(y[i] + " ");
System.out.println("");
for (int i = 0; i < x.length; i++)
System.out.print(x[i] + " ");
}
Run Code Online (Sandbox Code Playgroud)
答案是
1 11 3 4
99 0
Run Code Online (Sandbox Code Playgroud)
我的问题是我想当你分配两个数组时,它们共享相同的变化,因为它们是对象...就像我设置x[1] = 11;它时改变了它的值y,因此在将它改为2-后仍然不能与x相同大小的数组,或者因为我改变了大小,他们不再指向同一个地址?
int[] x = {1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)
{1, 2, 3, 4}被分配为数组.对它的引用被分配给x.
int[] y ;
y = x;
Run Code Online (Sandbox Code Playgroud)
同样分配了对该相同数组的引用y.
x[1] = 11;
Run Code Online (Sandbox Code Playgroud)
现在是两个x和y引用的数组{1, 11, 3, 4}.
x = new int[2];
Run Code Online (Sandbox Code Playgroud)
由于Java语义,分配了一个新数组{0, 0}.对它的引用被分配给x.现在x,y请参考两个不同的数组.没有调整大小.
x[0]=99;
Run Code Online (Sandbox Code Playgroud)
引用的数组x已更改,现在包含{99, 0}.这与数组y所指的无关,这仍然是愉快的{1, 11, 3, 4}.