1. 程式人生 > 資訊 >北京市網信辦依法約談處罰知乎網,責令其立即整改

北京市網信辦依法約談處罰知乎網,責令其立即整改

Java陣列的四種拷貝方式

1.for迴圈實現陣列copy

2.clone實現陣列copy

3.System.arraycopy()實現陣列copy

4.Arrays.copyOf實現陣列copy

下面通過下面實現一維陣列和二維陣列的copy

package com.joshua317;

import java.util.*;

public class Test {
    public static void main(String[] args) {
        String[] namesArr = {"joshua317","joshua","jack"};
        String[] namesArrCopy1 = new String[namesArr.length];
        //1.1 一維陣列--for迴圈實現陣列copy
        System.out.println("==========================一維陣列--for迴圈實現陣列copy============================");
        for (int i=0; i<namesArrCopy1.length; i++) {
            namesArrCopy1[i] = namesArr[i];
        }
        printArr(namesArrCopy1);
        //1.2 一維陣列--clone實現陣列copy
        System.out.println("==========================一維陣列--clone實現陣列copy============================");
        String[] namesArrCopy2 = namesArr.clone();
        printArr(namesArrCopy2);

        //1.3 一維陣列--System.arraycopy()
        System.out.println("==========================一維陣列--System.arraycopy()============================");
        String[] namesArrCopy3 = new String[namesArr.length];
        System.arraycopy(namesArr, 0,namesArrCopy3,0, namesArr.length);
        printArr(namesArrCopy3);

        //1.4 一維陣列--Arrays.copyOf實現陣列copy
        System.out.println("==========================一維陣列--Arrays.copyOf實現陣列copy============================");
        String[] namesArrCopy4 = Arrays.copyOf(namesArr,namesArr.length);
        printArr(namesArrCopy4);

        //2.1 二維陣列--for迴圈實現陣列copy
        System.out.println("==========================二維陣列--for迴圈實現陣列copy============================");
        String[][] names2Arr = {{"joshua317","joshua","jack"},{"joshua318","joshua2","jack2"}};
        String[][] names2ArrCopy1 = new String[names2Arr.length][names2Arr[0].length];
        for (int i = 0; i < names2ArrCopy1.length; i++) {
            for (int j = 0; j < names2ArrCopy1[i].length; j++) {
                names2ArrCopy1[i][j] = names2Arr[i][j];
            }
        }
        printArr2(names2ArrCopy1);

        //2.2 二維陣列--clone實現陣列copy
        System.out.println("==========================二維陣列--clone實現陣列copy============================");
        String[][] names2ArrCopy2 = new String[names2Arr.length][names2Arr[0].length];
        for (int i = 0; i < names2ArrCopy2.length; i++) {
            names2ArrCopy2[i] = names2Arr[i].clone();
        }
        printArr2(names2ArrCopy2);

        //2.3 二維陣列--System.arraycopy()
        System.out.println("==========================二維陣列--System.arraycopy()============================");
        String[][] names2ArrCopy3 = new String[names2Arr.length][names2Arr[0].length];
        for (int i = 0; i < names2ArrCopy3.length; i++) {
            System.arraycopy(names2Arr[i], 0,names2ArrCopy3[i],0, names2Arr[i].length);
        }
        printArr2(names2ArrCopy3);

        //2.4 二維陣列--Arrays.copyOf實現陣列copy
        System.out.println("==========================二維陣列--Arrays.copyOf實現陣列copy============================");
        String[][] names2ArrCopy4 = new String[names2Arr.length][names2Arr[0].length];
        for (int i = 0; i < names2ArrCopy4.length; i++) {
            names2ArrCopy4[i] = Arrays.copyOf(names2Arr[i],names2Arr[i].length);
        }
        printArr2(names2ArrCopy4);
    }
    public static <T> void printArr(T[] t)
    {
        System.out.println(Arrays.toString(t));
    }

    public static <T> void printArr2(T[][] t)
    {
        for (int i=0; i<t.length; i++) {
            System.out.println(Arrays.toString(t[i]));
        }
    }