java Arrays.copyOf實現淺複製

nt1979發表於2021-09-11

java Arrays.copyOf實現淺複製

為了不對原有的資料進行變動,我們通常會選用複製的方法,來建一個與之前資料一樣的模型。Arrays.copyOf是用來對陣列實現複製的,在複製的型別上屬於淺複製。這裡有人對複製的知識點有所遺忘,下面我們先簡單複習淺複製的概念,然後就Arrays.copyOf()複製和例項方法帶來講解。

1.淺複製說明

把原型物件中成員變數為值型別的屬性都複製給克隆物件,把原型物件中成員變數為引用型別的引用地址也複製給克隆物件,也就是原型物件中如果有成員變數為引用物件,則此引用物件的地址是共享給原型物件和克隆物件的。簡單來說就是淺複製只會複製原型物件,但不會複製它所引用的物件。

2.Arrays.copyOf()複製

是建立一個新的陣列(也就是分配了一個新的記憶體空間),然後呼叫System.arraycopy()複製內容,賦值給新陣列,然後返回新陣列。

3.例項

public static byte[] copyOfRange(byte[] original, int from, int to) {
    int newLength = to - from;
    if (newLength < 0)
        throw new IllegalArgumentException(from + " > " + to);
    byte[] copy = new byte[newLength];
    System.arraycopy(original, from, copy, 0,Math.min(original.length - from, newLength));
    return copy;
}

實際上它呼叫的就是System.arraycopy,所以肯定也是淺複製。

以上就是java Arrays.copyOf實現淺複製的方法,在講解用法的同時,我們會發現它只複製了原型物件,所以是屬於淺複製的型別。更多Java學習指路:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2830935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章