Java - 字符串和数组引用

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无关.