Java - 改变指针改变价值观?

时间:2013-03-05 01:40:41

标签: java arrays pointers

我在Java中有一个充满数据的数组。 我想知道的是,如果我做这样的事情:

int[] array = new int[2];
array[0] = 0;
array[1] = 1;

//other statements...

array[1] = array[0];

如果我再次更改array[1]的值,array[0]的值是否也会发生变化? 谢谢!

1 个答案:

答案 0 :(得分:3)

  

如果我再次更改数组[1]的值,那么数组[0]的值也会改变吗?

没有。这句话:

array[1] = array[0];

只需将第二个元素的值复制到第一个元素中。就像你有两个独立的变量一样:

int x = 10;
int y = x;
// Further changes to x don't affect y

同样也是是真的 - 但更巧妙 - 如果你有一个引用数组,例如

StringBuilder[] builders = new StringBuilder[10];
builders[0] = new StringBuilder("Original");
builders[1] = builders[0];
builders[0] = new StringBuilder("Hello");
System.out.println(builders[1]); // Prints Original

最后一个赋值语句不会更改builders[1]的值...但如果相反我们写了:

builders[0].append("Foo");
System.out.println(builders[1]); // Prints OriginalFoo

然后builders[0]builders[1]的值没有改变 - 它们仍然引用相同的对象 - 但该对象的内容已经改变,因此输出在最后一行。