从一个数组到另一个数组的奇怪副本值

Dry*_*zav 3 java

当我在Java中查看代码示例时,我看到了一个奇怪的代码:

public class Application {
     public static void main(String[] args) {
          String[] x = {"A"};
          String[] y = x;
          x[0] = "B";
          System.out.print(x[0] + " " + y[0]);
     }
}
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么结果"B B"是正确的?当我创建并初始化数组x和y并且指定数组x的零元素等于B时,我认为答案必须是"B A".

Bri*_*new 6

String[] y = x;
Run Code Online (Sandbox Code Playgroud)

表示数组y现在引用数组x.

因此,改变内容x意味着改变的内容y(因为它们是相同的).

在Java中详细说明:

String[] y = {...};
Run Code Online (Sandbox Code Playgroud)

意味着您声明y对数组引用,而不是数组本身.因此,在分配时,您将分配引用而不是复制对象值.