Java數(shù)組拷貝的幾種方法小結
本教程內容包括數(shù)據(jù)類型與運算、流程控制、數(shù)組、函數(shù)、面向對象基礎、字符串、集合、異常處理、IO 流及多線程等 Java 編程基礎知識,并提供豐富的實例和練習,幫助讀者鞏固所學知識。本教程不僅適合初學者學習,也適合已經(jīng)掌握一定 Java 基礎的讀者進行查漏補缺。
前言
在Java中,數(shù)組是一種非常常見的數(shù)據(jù)結構,我們在編寫代碼時經(jīng)常需要對數(shù)組進行拷貝操作。Java提供了多種數(shù)組拷貝的方式,本文將介紹幾種常見的數(shù)組拷貝方法,并對它們的優(yōu)缺點進行比較。
摘要
本文將介紹Java數(shù)組拷貝的幾種方法,包括for循環(huán)、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()和clone()方法。對這幾種方法進行了詳細的介紹,包括代碼實現(xiàn)、方法介紹、測試用例和優(yōu)缺點比較,最后給出了全文的小結。
內容
1. for循環(huán)
for循環(huán)是最基本的數(shù)組拷貝方法,它可以將一個數(shù)組的值逐一復制到另一個數(shù)組中。
public static void arrayCopy(int[] src, int[] dest) { for (int i = 0; i < src.length; i++) { dest[i] = src[i]; } }
這種方法非常簡單,但是它的效率不太高,特別是在處理大型數(shù)組時。此外,如果數(shù)組的長度不同,這種方法就無法使用。
2. System.arraycopy()
System.arraycopy()方法是Java中比較常用的數(shù)組拷貝方法之一,它的效率比for循環(huán)高,尤其在處理大型數(shù)組時。
public static void arrayCopy(int[] src, int[] dest, int length) { System.arraycopy(src, 0, dest, 0, length); }
其中,src表示源數(shù)組,dest表示目標數(shù)組,length表示要拷貝的長度。
System.arraycopy()方法的優(yōu)點是效率高,缺點是處理數(shù)組長度不同的情況比較麻煩。
3. Arrays.copyOf()
Arrays.copyOf()方法可以創(chuàng)建一個與源數(shù)組相同長度的新數(shù)組,并將源數(shù)組的值復制到新數(shù)組中。
public static void arrayCopy(int[] src, int[] dest, int length) { dest = Arrays.copyOf(src, length); }
其中,src表示源數(shù)組,dest表示目標數(shù)組,length表示要拷貝的長度。
Arrays.copyOf()方法的優(yōu)點是使用方便,可以輕松處理數(shù)組長度不同的情況。缺點是它不能拷貝源數(shù)組的一部分。
4. Arrays.copyOfRange()
Arrays.copyOfRange()方法可以創(chuàng)建一個指定長度的新數(shù)組,并將源數(shù)組的一部分復制到新數(shù)組中。
public static void arrayCopy(int[] src, int[] dest, int start, int end) { dest = Arrays.copyOfRange(src, start, end); }
其中,src表示源數(shù)組,dest表示目標數(shù)組,start表示要拷貝的起始位置,end表示要拷貝的結束位置。
Arrays.copyOfRange()方法的優(yōu)點是使用方便,可以輕松處理數(shù)組長度不同的情況,并且可以拷貝源數(shù)組的一部分。缺點是效率相對較低。
5. clone()方法
clone()方法是Java中用于復制一個對象的方法,它也可以用于數(shù)組拷貝。
public static void arrayCopy(int[] src, int[] dest) { dest = src.clone(); }
其中,src表示源數(shù)組,dest表示目標數(shù)組。
clone()方法的優(yōu)點是使用方便,并且可以輕松處理數(shù)組長度不同的情況。缺點是效率相對較低。
代碼方法介紹
1. for循環(huán)
這種方法使用for循環(huán)遍歷源數(shù)組,逐一將數(shù)組元素賦值給目標數(shù)組。方法代碼如下所示:
public static void arrayCopy(int[] src, int[] dest) { for (int i = 0; i < src.length; i++) { dest[i] = src[i]; } }
解讀:其中src表示源數(shù)組,dest表示目標數(shù)組。
2. System.arraycopy()
System.arraycopy()方法是Java中用于拷貝數(shù)組的方法,它可以拷貝一個數(shù)組的一部分或全部到另一個數(shù)組中。方法代碼如下所示:
public static void arrayCopy(int[] src, int[] dest, int length) { System.arraycopy(src, 0, dest, 0, length); }
解讀:其中src表示源數(shù)組,dest表示目標數(shù)組,length表示要拷貝的長度。
3. Arrays.copyOf()
Arrays.copyOf()方法可以創(chuàng)建一個與源數(shù)組相同長度的新數(shù)組,并將源數(shù)組的值復制到新數(shù)組中。方法代碼如下所示:
public static void arrayCopy(int[] src, int[] dest, int length) { dest = Arrays.copyOf(src, length); }
解讀:其中src表示源數(shù)組,dest表示目標數(shù)組,length表示要拷貝的長度。
4. Arrays.copyOfRange()
Arrays.copyOfRange()方法可以創(chuàng)建一個指定長度的新數(shù)組,并將源數(shù)組的一部分復制到新數(shù)組中。方法代碼如下所示:
public static void arrayCopy(int[] src, int[] dest, int start, int end) { dest = Arrays.copyOfRange(src, start, end); }
解讀:其中src表示源數(shù)組,dest表示目標數(shù)組,start表示要拷貝的起始位置,end表示要拷貝的結束位置。
5. clone()方法
clone()方法是Java中用于復制一個對象的方法,它也可以用于數(shù)組拷貝。方法代碼如下所示:
public static void arrayCopy(int[] src, int[] dest) { dest = src.clone(); }
解讀:其中src表示源數(shù)組,dest表示目標數(shù)組。
測試用例
我們可以編寫如下的測試用例來測試上述數(shù)組拷貝方法的正確性:
? ? @Test ? ? public void testCopyArr() { ? ? ? ? int[] src = {1, 2, 3, 4, 5}; ? ? ? ? int[] dest = new int[5]; ? ? ? ? // for循環(huán) ? ? ? ? for (int i = 0; i < src.length; i++) { ? ? ? ? ? ? dest[i] = src[i]; ? ? ? ? } ? ? ? ? assertArrayEquals(src, dest); ? ? ? ? // System.arraycopy() ? ? ? ? System.arraycopy(src, 0, dest, 0, 5); ? ? ? ? assertArrayEquals(src, dest); ? ? ? ? // Arrays.copyOf() ? ? ? ? dest = Arrays.copyOf(src, 5); ? ? ? ? assertArrayEquals(src, dest); ? ? ? ? // Arrays.copyOfRange() ? ? ? ? dest = Arrays.copyOfRange(src, 2, 4); ? ? ? ? int[] expected = {3, 4}; ? ? ? ? assertArrayEquals(expected, dest); ? ? ? ? // clone()方法 ? ? ? ? dest = src.clone(); ? ? ? ? assertArrayEquals(src, dest); ? ? }
運行截圖如下:
優(yōu)缺點比較
上述幾種數(shù)組拷貝方法都有各自的優(yōu)點和缺點,下面對它們進行比較:
for循環(huán):
優(yōu)點:簡單易懂,容易掌握。
缺點:效率低,不能處理數(shù)組長度不同的情況。
System.arraycopy():
優(yōu)點:效率高,可以處理大型數(shù)組。
缺點:處理數(shù)組長度不同的情況比較麻煩。
Arrays.copyOf():
優(yōu)點:使用方便,可以輕松處理數(shù)組長度不同的情況。
缺點:不能拷貝源數(shù)組的一部分。
Arrays.copyOfRange():
優(yōu)點:使用方便,支持拷貝源數(shù)組的一部分。
缺點:效率相對較低。
clone()方法:
優(yōu)點:使用方便,可以處理數(shù)組長度不同的情況。
缺點:效率相對較低。
全文小結
本文介紹了Java數(shù)組拷貝的幾種常見方法,包括for循環(huán)、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()和clone()方法。對每種方法的實現(xiàn)、方法介紹、測試用例和優(yōu)缺點進行了詳細介紹和比較。通過本文的學習,讀者可以了解到Java中數(shù)組拷貝的常見方法及其優(yōu)缺點。
到此這篇關于Java數(shù)組拷貝的幾種方法小結的文章就介紹到這了,更多相關Java數(shù)組拷貝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring實戰(zhàn)之ResourceLoader接口資源加載用法示例
這篇文章主要介紹了Spring實戰(zhàn)之ResourceLoader接口資源加載用法,結合實例形式分析了Spring使用ResourceLoader接口加載資源的相關配置與使用技巧,需要的朋友可以參考下2020-01-01SpringBoot集成POI導出Execl表格之統(tǒng)一工具類
這篇文章主要為大家詳細介紹了SpringBoot集成POI導出Execl表格之統(tǒng)一工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09spring cloud gateway全局過濾器實現(xiàn)向request header中放數(shù)據(jù)
這篇文章主要介紹了spring cloud gateway全局過濾器實現(xiàn)向request header中放數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07