int[] 复制 = 数据; // 当数据是数组时会发生什么?

int[] copy = data; // What happens when data is an array?

有人会用内存图解释当你放置时会发生什么吗

    int[] data  = {1, 3, 5, 7, 9};
    int[] copy = data;

在你的程序中?

它只是简单地创建一个与前面相同长度的数组吗?我知道它们不会有相同的值,但仅此而已。

是否会在第一个索引中复制接收数据的地址?

不会发生数据复制,您只是将对数组的引用分配给新变量。

----------
| int[5] | <--- data
|   1    |      points at the memory address of your array object
|   3    |
|   5    |
|   7    |
|   9    |
----------

当你说:

 int[] copy = data

这是怎么回事:

         ----------
copy --> | int[5] | <--- data 
         |   1    |      points at the memory address of your array object 
         |   3    |      "copy" also points at the same memory location
         |   5    |
         |   7    |
         |   9    |
         ----------

这根本不是复制。

你的两个变量 datacopy 将指向同一个数组。

如果你想要一份,你可以

int[] copy = Arrays.copyOf(data, data.length);

尝试输出此代码。

System.out.println(data instanceof Object);

您将看到输出:

true

这是因为 int[]Object 的子类。简单地说,copy 现在指向数据指向的同一个数组。