會有人解釋發生了什麼,有記憶圖,當你把int [] copy = data; //當數據是數組時會發生什麼?
int[] data = {1, 3, 5, 7, 9};
int[] copy = data;
在你的程序?
它是否只是創建一個與前一個長度相同的數組?我知道他們不會有相同的價值觀,但這就是全部。
將接收數據的地址複製到第一個索引中嗎?
會有人解釋發生了什麼,有記憶圖,當你把int [] copy = data; //當數據是數組時會發生什麼?
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 |
----------
謝謝瑞安!這正是我需要的。我知道它不會製作新的副本,但我不明白到底發生了什麼。 – ShadoWolf150
這不是製作一份拷貝的。
你的兩個變量data
和copy
將指向相同的數組。
如果你想要一個副本,你可以做
int[] copy = Arrays.copyOf(data, data.length);
嘗試輸出該代碼。
System.out.println(data instanceof Object);
你會看到輸出:
true
這是因爲int[]
是Object
子類。簡單地說,copy
現在指向數據指向的同一個數組。
這很有趣也很有幫助!謝謝。你還可以申請這個嗎? – ShadoWolf150
我不明白我爲什麼得到反對票,這是一個嚴重的問題... – ShadoWolf150