首頁> Java> Java入門> 主體

java如何複製數組

王林
發布: 2020-10-19 16:52:37
轉載
2618 人瀏覽過

java如何複製數組

1、陣列長度相等

假設nums和nums1是長度相等的兩個陣列。

(推薦教學:java課程

1.1、用nums = nums1;

賦值前

java如何複製數組

賦值後

java如何複製數組

#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]; }
登入後複製

迴圈前

java如何複製數組

#後

java如何複製數組

##成功改變nums數組內部內容,而沒有改變其引用。

java如何複製數組1.3、Arrays類別

方法1:複製指定陣列至指定長度

nums = Arrays.copyOf(nums1,5);
登入後複製

方法2:複製指定陣列的指定長度java如何複製數組

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.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报java.lang.ArrayIndexOutOfBoundsException

其他:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

//思路:设置一个index,表示非0数的个数,循环遍历数组, // 如果不是0,将非0值移动到第index位置,然后index + 1 //遍历结束之后,index值表示为非0的个数,再次遍历,从index位置后的位置此时都应该为0 public void moveZeroes(int[] nums) { if (nums == null || nums.length <= 1) { return; } int index = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != 0) { nums[index] = nums[i]; index++; } } for (int i = index; i < nums.length; i++) { nums[i] = 0; } }
登入後複製

相关推荐:java入门

以上是java如何複製數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!