欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)組拷貝的幾種方法小結(jié)

 更新時(shí)間:2023年09月08日 11:43:36   作者:我崽不熬夜  
本文主要介紹了Java數(shù)組拷貝的幾種方法小結(jié),包括for循環(huán)、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()和clone()方法,具有一定的參考價(jià)值,感興趣的可以了解一下

本教程內(nèi)容包括數(shù)據(jù)類(lèi)型與運(yùn)算、流程控制、數(shù)組、函數(shù)、面向?qū)ο蠡A(chǔ)、字符串、集合、異常處理、IO 流及多線程等 Java 編程基礎(chǔ)知識(shí),并提供豐富的實(shí)例和練習(xí),幫助讀者鞏固所學(xué)知識(shí)。本教程不僅適合初學(xué)者學(xué)習(xí),也適合已經(jīng)掌握一定 Java 基礎(chǔ)的讀者進(jìn)行查漏補(bǔ)缺。

前言

在Java中,數(shù)組是一種非常常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),我們?cè)诰帉?xiě)代碼時(shí)經(jīng)常需要對(duì)數(shù)組進(jìn)行拷貝操作。Java提供了多種數(shù)組拷貝的方式,本文將介紹幾種常見(jiàn)的數(shù)組拷貝方法,并對(duì)它們的優(yōu)缺點(diǎn)進(jìn)行比較。

摘要

本文將介紹Java數(shù)組拷貝的幾種方法,包括for循環(huán)、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()和clone()方法。對(duì)這幾種方法進(jìn)行了詳細(xì)的介紹,包括代碼實(shí)現(xiàn)、方法介紹、測(cè)試用例和優(yōu)缺點(diǎn)比較,最后給出了全文的小結(jié)。

內(nèi)容

1. for循環(huán)

for循環(huán)是最基本的數(shù)組拷貝方法,它可以將一個(gè)數(shù)組的值逐一復(fù)制到另一個(gè)數(shù)組中。

public static void arrayCopy(int[] src, int[] dest) {
  for (int i = 0; i < src.length; i++) {
    dest[i] = src[i];
  }
}

這種方法非常簡(jiǎn)單,但是它的效率不太高,特別是在處理大型數(shù)組時(shí)。此外,如果數(shù)組的長(zhǎng)度不同,這種方法就無(wú)法使用。

2. System.arraycopy()

System.arraycopy()方法是Java中比較常用的數(shù)組拷貝方法之一,它的效率比f(wàn)or循環(huán)高,尤其在處理大型數(shù)組時(shí)。

public static void arrayCopy(int[] src, int[] dest, int length) {
  System.arraycopy(src, 0, dest, 0, length);
}

其中,src表示源數(shù)組,dest表示目標(biāo)數(shù)組,length表示要拷貝的長(zhǎng)度。

System.arraycopy()方法的優(yōu)點(diǎn)是效率高,缺點(diǎn)是處理數(shù)組長(zhǎng)度不同的情況比較麻煩。

3. Arrays.copyOf()

Arrays.copyOf()方法可以創(chuàng)建一個(gè)與源數(shù)組相同長(zhǎng)度的新數(shù)組,并將源數(shù)組的值復(fù)制到新數(shù)組中。

public static void arrayCopy(int[] src, int[] dest, int length) {
  dest = Arrays.copyOf(src, length);
}

其中,src表示源數(shù)組,dest表示目標(biāo)數(shù)組,length表示要拷貝的長(zhǎng)度。
Arrays.copyOf()方法的優(yōu)點(diǎn)是使用方便,可以輕松處理數(shù)組長(zhǎng)度不同的情況。缺點(diǎn)是它不能拷貝源數(shù)組的一部分。

4. Arrays.copyOfRange()

Arrays.copyOfRange()方法可以創(chuàng)建一個(gè)指定長(zhǎng)度的新數(shù)組,并將源數(shù)組的一部分復(fù)制到新數(shù)組中。

public static void arrayCopy(int[] src, int[] dest, int start, int end) {
  dest = Arrays.copyOfRange(src, start, end);
}

其中,src表示源數(shù)組,dest表示目標(biāo)數(shù)組,start表示要拷貝的起始位置,end表示要拷貝的結(jié)束位置。
Arrays.copyOfRange()方法的優(yōu)點(diǎn)是使用方便,可以輕松處理數(shù)組長(zhǎng)度不同的情況,并且可以拷貝源數(shù)組的一部分。缺點(diǎn)是效率相對(duì)較低。

5. clone()方法

clone()方法是Java中用于復(fù)制一個(gè)對(duì)象的方法,它也可以用于數(shù)組拷貝。

public static void arrayCopy(int[] src, int[] dest) {
  dest = src.clone();
}

其中,src表示源數(shù)組,dest表示目標(biāo)數(shù)組。
clone()方法的優(yōu)點(diǎn)是使用方便,并且可以輕松處理數(shù)組長(zhǎng)度不同的情況。缺點(diǎn)是效率相對(duì)較低。

代碼方法介紹

1. for循環(huán)

這種方法使用for循環(huán)遍歷源數(shù)組,逐一將數(shù)組元素賦值給目標(biāo)數(shù)組。方法代碼如下所示:

public static void arrayCopy(int[] src, int[] dest) {
  for (int i = 0; i < src.length; i++) {
    dest[i] = src[i];
  }
}

解讀:其中src表示源數(shù)組,dest表示目標(biāo)數(shù)組。

2. System.arraycopy()

System.arraycopy()方法是Java中用于拷貝數(shù)組的方法,它可以拷貝一個(gè)數(shù)組的一部分或全部到另一個(gè)數(shù)組中。方法代碼如下所示:

public static void arrayCopy(int[] src, int[] dest, int length) {
  System.arraycopy(src, 0, dest, 0, length);
}

解讀:其中src表示源數(shù)組,dest表示目標(biāo)數(shù)組,length表示要拷貝的長(zhǎng)度。

3. Arrays.copyOf()

Arrays.copyOf()方法可以創(chuàng)建一個(gè)與源數(shù)組相同長(zhǎng)度的新數(shù)組,并將源數(shù)組的值復(fù)制到新數(shù)組中。方法代碼如下所示:

public static void arrayCopy(int[] src, int[] dest, int length) {
  dest = Arrays.copyOf(src, length);
}

解讀:其中src表示源數(shù)組,dest表示目標(biāo)數(shù)組,length表示要拷貝的長(zhǎng)度。

4. Arrays.copyOfRange()

Arrays.copyOfRange()方法可以創(chuàng)建一個(gè)指定長(zhǎng)度的新數(shù)組,并將源數(shù)組的一部分復(fù)制到新數(shù)組中。方法代碼如下所示:

public static void arrayCopy(int[] src, int[] dest, int start, int end) {
  dest = Arrays.copyOfRange(src, start, end);
}

解讀:其中src表示源數(shù)組,dest表示目標(biāo)數(shù)組,start表示要拷貝的起始位置,end表示要拷貝的結(jié)束位置。

5. clone()方法

clone()方法是Java中用于復(fù)制一個(gè)對(duì)象的方法,它也可以用于數(shù)組拷貝。方法代碼如下所示:

public static void arrayCopy(int[] src, int[] dest) {
  dest = src.clone();
}

解讀:其中src表示源數(shù)組,dest表示目標(biāo)數(shù)組。

測(cè)試用例

我們可以編寫(xiě)如下的測(cè)試用例來(lái)測(cè)試上述數(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ùn)行截圖如下:

優(yōu)缺點(diǎn)比較

上述幾種數(shù)組拷貝方法都有各自的優(yōu)點(diǎn)和缺點(diǎn),下面對(duì)它們進(jìn)行比較:

for循環(huán):

優(yōu)點(diǎn):簡(jiǎn)單易懂,容易掌握。
缺點(diǎn):效率低,不能處理數(shù)組長(zhǎng)度不同的情況。

System.arraycopy():

優(yōu)點(diǎn):效率高,可以處理大型數(shù)組。
缺點(diǎn):處理數(shù)組長(zhǎng)度不同的情況比較麻煩。

Arrays.copyOf():

優(yōu)點(diǎn):使用方便,可以輕松處理數(shù)組長(zhǎng)度不同的情況。
缺點(diǎn):不能拷貝源數(shù)組的一部分。

Arrays.copyOfRange():

優(yōu)點(diǎn):使用方便,支持拷貝源數(shù)組的一部分。
缺點(diǎn):效率相對(duì)較低。

clone()方法:

優(yōu)點(diǎn):使用方便,可以處理數(shù)組長(zhǎng)度不同的情況。
缺點(diǎn):效率相對(duì)較低。

全文小結(jié)

本文介紹了Java數(shù)組拷貝的幾種常見(jiàn)方法,包括for循環(huán)、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()和clone()方法。對(duì)每種方法的實(shí)現(xiàn)、方法介紹、測(cè)試用例和優(yōu)缺點(diǎn)進(jìn)行了詳細(xì)介紹和比較。通過(guò)本文的學(xué)習(xí),讀者可以了解到Java中數(shù)組拷貝的常見(jiàn)方法及其優(yōu)缺點(diǎn)。

到此這篇關(guān)于Java數(shù)組拷貝的幾種方法小結(jié)的文章就介紹到這了,更多相關(guān)Java數(shù)組拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java通過(guò)ip獲取客戶端Mac地址的小例子

    java通過(guò)ip獲取客戶端Mac地址的小例子

    java通過(guò)ip獲取客戶端Mac地址的小例子,需要的朋友可以參考一下
    2013-03-03
  • Spring實(shí)戰(zhàn)之ResourceLoader接口資源加載用法示例

    Spring實(shí)戰(zhàn)之ResourceLoader接口資源加載用法示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之ResourceLoader接口資源加載用法,結(jié)合實(shí)例形式分析了Spring使用ResourceLoader接口加載資源的相關(guān)配置與使用技巧,需要的朋友可以參考下
    2020-01-01
  • Java集合系列之LinkedList源碼分析

    Java集合系列之LinkedList源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java集合系列之LinkedList源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • SpringBoot集成POI導(dǎo)出Execl表格之統(tǒng)一工具類(lèi)

    SpringBoot集成POI導(dǎo)出Execl表格之統(tǒng)一工具類(lèi)

    這篇文章主要為大家詳細(xì)介紹了SpringBoot集成POI導(dǎo)出Execl表格之統(tǒng)一工具類(lèi),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • JAVAsynchronized原理詳解

    JAVAsynchronized原理詳解

    這篇文章主要介紹了Java中synchronized實(shí)現(xiàn)原理詳解,涉及synchronized實(shí)現(xiàn)同步的基礎(chǔ),Java對(duì)象頭,Monitor,Mark Word,鎖優(yōu)化,自旋鎖等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • java中random的用法小結(jié)

    java中random的用法小結(jié)

    這篇文章主要介紹了java中random的用法詳解,主要包括java.lang.Math.random()方法的用法及java.util.Random類(lèi)用法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 詳解Spring?Bean的配置方式與實(shí)例化

    詳解Spring?Bean的配置方式與實(shí)例化

    本文主要帶大家一起學(xué)習(xí)一下Spring?Bean的配置方式與實(shí)例化,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Spring有一定的幫助,需要的可以參考一下
    2022-06-06
  • java導(dǎo)出包含多個(gè)sheet的Excel代碼示例

    java導(dǎo)出包含多個(gè)sheet的Excel代碼示例

    這篇文章主要介紹了java導(dǎo)出包含多個(gè)sheet的Excel,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java中字符串和byte數(shù)組之間的簡(jiǎn)單轉(zhuǎn)換方法

    Java中字符串和byte數(shù)組之間的簡(jiǎn)單轉(zhuǎn)換方法

    這篇文章主要給大家介紹了關(guān)于Java中字符串和byte數(shù)組之間的簡(jiǎn)單轉(zhuǎn)換方法,Java中將String類(lèi)型轉(zhuǎn)換為byte[]類(lèi)型,可以使用String的getBytes()方法,還有很多其他的辦法,需要的朋友可以參考下
    2023-08-08
  • spring cloud gateway全局過(guò)濾器實(shí)現(xiàn)向request header中放數(shù)據(jù)

    spring cloud gateway全局過(guò)濾器實(shí)現(xiàn)向request header中放數(shù)據(jù)

    這篇文章主要介紹了spring cloud gateway全局過(guò)濾器實(shí)現(xiàn)向request header中放數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論