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 |
----------
这根本不是复制。
你的两个变量 data
和 copy
将指向同一个数组。
如果你想要一份,你可以
int[] copy = Arrays.copyOf(data, data.length);
尝试输出此代码。
System.out.println(data instanceof Object);
您将看到输出:
true
这是因为 int[]
是 Object
的子类。简单地说,copy
现在指向数据指向的同一个数组。
有人会用内存图解释当你放置时会发生什么吗
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 |
----------
这根本不是复制。
你的两个变量 data
和 copy
将指向同一个数组。
如果你想要一份,你可以
int[] copy = Arrays.copyOf(data, data.length);
尝试输出此代码。
System.out.println(data instanceof Object);
您将看到输出:
true
这是因为 int[]
是 Object
的子类。简单地说,copy
现在指向数据指向的同一个数组。