use*_*966 2 java arrays string
刚开始学习Java,发现字符串和数组都是引用类型.我不明白以下问题:
String a = "a1";
String b = "a2";
a=b;
a = "rrr";
System.out.println(a);
System.out.println(b);
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
arr2[0]= 19;
System.out.println(arr1[0]);
Run Code Online (Sandbox Code Playgroud)
当我打印它时,我得到: "rrr" "a2" 10
当使用数组时 - 我知道它们都指向同一个对象,所以如果我改变单元格 - 我看到arr1和arr2的区别.
关于"字符串" - 根据我的理解,当我这样做时:a = b它不应该是:" a指向同一个对象,b指向" - 意思是如果我改变了它们,它们都需要被改变?
谢谢!!
Mur*_*nik 10
在数组的情况下,您实际上是在修改数组,因此如果一个引用被更改,另一个引用也是如此.
在字符串的情况下,您不是在修改对象,而只是为该引用分配不同的对象.正如您所指出的那样:a=b意味着"让一个指向与b相同的对象指向".遵循同样的思路,a="rrr"意味着"让点文字"rrr"",这与b无关.