【发布时间】:2016-08-26 14:19:19
【问题描述】:
问题
下面的代码显示,当一个数组影响另一个数组时,两个数组相互依赖。
int tab [] = {1,2,3};
int tab2 [] = tab;
tab2[0] = 5;
System.out.print(tab[0]); // 5
我想知道为什么这与类型 String 不同,因为如果我们有以下内容:
String ch1 = "hello";
String ch2 = ch1;
ch2 = "hi";
System.out.print(ch1); // hello
ch1 和ch2 这两个变量引用的是同一个字符串,所以改变一个会影响另一个。
【问题讨论】:
-
这两个变量显然没有引用同一个字符串,正如您的 sn-p 所展示的那样。
-
在第一个示例中,您正在修改由两个变量引用的某些内容的值。在第二个示例中,您将更改
ch2的引用。 -
在Java中改变String是不可能的,String提供了不可变的对象。