將一個陣列複製到另一個陣列上
複製陣列
這是我做leetbook陣列題的第一題時遇到的疑問,決定分兩個情況考慮。
1、陣列長度相等
假設nums和nums1是長度相等的兩個陣列。
1.1、用nums = nums1;
賦值前
賦值後
nums建立的時候在堆裡面建立一塊記憶體區域用來儲存,nums指向這個記憶體地址A。
nums1建立後指向B。
現在令nums = nums1;
則把num1的地址(或者說是引用)賦給了num,所以num也指向了B。
兩個陣列都指向堆中同一個記憶體區域,他們是共享裡面的資料。
1.2、for迴圈
for (int i = 0; i < nums1.length; i++){
nums[i] = nums1[i];
}
迴圈前:
迴圈後:
成功改變nums陣列內部內容,而沒有改變其引用。
1.3、Arrays類
方法1:複製指定陣列至指定長度
nums = Arrays.copyOf(nums1,5);
方法2:複製指定陣列的指定長度
nums = Arrays.copyOfRange(nums1,0,5);
兩種方法最後的索引都可以>陣列的長度,然後後面的都會補上0。
兩種方法都可以成功複製陣列,而且我們發現原陣列nums從524變成了526,說明這兩種複製方法是建立了一個新陣列,然後用等號左邊的陣列指向這個新陣列。
1.4、System.arraycopy方法
System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);
可以看出這個方法類似於我們的for迴圈,是直接改原來陣列的內容,沒有改引用。
2、陣列長度不等
- 賦值法成功
- for迴圈要注意越界問題,會報java.lang.ArrayIndexOutOfBoundsException
- Arrays類法成功
- 注意越界問題,會報java.lang.ArrayIndexOutOfBoundsException
相關文章
- javascript 將一個陣列中的元素的值複製到另一個已有資料的陣列中JavaScript陣列
- 如何將一個陣列中的元素插入另一個陣列陣列
- javascript如何複製一個陣列JavaScript陣列
- android典型程式碼系列(十九)------將一個陣列複製成為另外一個陣列的方法Android陣列
- 將一個陣列賦值給另外一個陣列陣列賦值
- 一個陣列和另一個陣列比較,如果第一個陣列裡面有的就不新增了陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- 將個人註冊資訊傳到另一個頁面(包含陣列的傳遞)陣列
- js將一個陣列追加到原陣列中JS陣列
- javascript將陣列的元素每兩個一組存入一個新陣列JavaScript陣列
- javascript實現複製一個陣列程式碼例項JavaScript陣列
- 將一個Collection轉為陣列陣列
- 使用vuejs獲取兩個陣列id,如果某一個陣列id成功匹配另一個陣列內id,那麼就勾選VueJS陣列
- iOS遍歷陣列相同值元素到另一陣列中同一物件的子陣列iOS陣列物件
- 物件陣列 根據key 把一樣的push到一個陣列物件陣列
- 陣列1——求一個陣列的最大子陣列陣列
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 兩個有序陣列如何合併成一個有序陣列陣列
- Python多個陣列合並(拼接)為一個陣列Python陣列
- C# 將資料夾中檔案複製到另一個資料夾C#
- javascript 陣列的深度複製JavaScript陣列
- JS 複製陣列和物件JS陣列物件
- C# 陣列的複製C#陣列
- C#中複製陣列C#陣列
- 陣列去除重複的幾個方法陣列
- js如何複製指定的陣列JS陣列
- 克隆一個陣列的方法陣列
- impdp在同一個資料庫中將一個使用者下的物件複製到另一個使用者下資料庫物件
- 將一個多維陣列徹底的降維陣列
- 複製目錄下的全部檔案到另一個目錄
- [分享]javascript 陣列以及物件的深拷貝(複製陣列或複製物件)的方法JavaScript陣列物件
- MongoDB 複製一個collection裡的資料到另一個collectionMongoDB
- C/C++——宣告一個到字元的指標,包含10個整數的陣列,到包含10個整數的陣列的引用,到字串的陣列的指標,到字元的指標的指標...C++字元指標陣列字串
- C/C++ 讀入一個整型陣列,陣列大小未知C++陣列
- [求解]陣列,分成倆個陣列,陣列值之和的相差最小。陣列
- 陣列合並且去重&向一個陣列新增一條資料(重複的就不新增)&陣列物件去重處理陣列物件
- JS中的陣列複製問題JS陣列
- 陣列(引用型別)複製問題陣列型別