将Java引用分配给null不会影响其他对象

时间:2018-04-10 14:05:23

标签: java object reference

我有两个字符串数组,一个是另一个。为什么我将其中一个指定为null而不会影响另一个?作为控制台输出,它们都具有相同的地址。与c ++不一样吗?这是我的代码:

String []  bikes = new String[5];
String [] largerBikes = new String[bikes.length + 5];
bikes = largerBikes;
System.out.println(bikes);
System.out.println(largerBikes);
largerBikes = null;
System.out.println(bikes);
System.out.println(largerBikes);

enter image description here

1 个答案:

答案 0 :(得分:2)

  

他们都有相同的地址

不,他们都指向同一个地址。

当您为largerBikes指定null时,您只是将该变量(对实际数组内容的引用)设置为null,而不是它指向的内容。

bikeslargerBikes彼此分开。 bikes变量本身与largerBikes变量分开存储。

当你写bikes = largerBikes时,你有以下情况:

enter image description here

但是当你写largerBikes = null时,你只需清除对该数组的单一引用:

enter image description here