Java - 字符串和数组引用

标签 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]);

当我打印它时,我得到:"rrr""a2"10

使用数组时 - 我知道它们都指向同一个对象,因此如果我更改单元格 - 我会看到 arr1 和 arr2 处的差异。

关于“字符串” - 根据我的理解,当我这样做时:a = b它不应该是:“让a指向与b指向的同一对象“- 意思是如果我改变a,它们也需要改变?

谢谢!!

最佳答案

在数组的情况下,您实际上是在修改数组,因此如果一个引用发生更改,另一个引用也会发生更改。

在字符串情况下,您修改对象,您只是将不同对象分配给该引用。 正如您所指出的: a=b 表示“让 a 指向与 b 指向的同一对象”。按照同样的思路,a="rrr" 的意思是“让 a 指向文字“rrr””,与 b 无关。

关于Java - 字符串和数组引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940360/

相关文章:

java - Mockito 在调用 getter 时设置字段

java - Spring资源返回空白html页面

arrays - 如何确定 C 中数组的大小?

java - 访问嵌套类中的全局变量

javascript - 返回数组和子节点

javascript - 如何连接数组中同一元素的多个属性?

java - 从字符串中删除随机字符

python - 如何在抓取的 Pandas 数据框中的所有列上使用 `str.replace()` 方法?

python - 当元组列表中相同项目的值是字符串时,对它们的值求和

java - 如何设置属性顺序?