欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Java數(shù)組拷貝源碼分析

這篇文章主要介紹“Java數(shù)組拷貝源碼分析”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Java數(shù)組拷貝源碼分析”文章能幫助大家解決問題。

站在用戶的角度思考問題,與客戶深入溝通,找到額敏網(wǎng)站設(shè)計(jì)與額敏網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋額敏地區(qū)。

Java數(shù)組拷貝源碼分析

循環(huán)對(duì)數(shù)組進(jìn)行拷貝

利用循環(huán)對(duì)數(shù)組進(jìn)行拷貝很簡(jiǎn)單,就是利用循環(huán)將要拷貝的數(shù)組的元素逐個(gè)賦值給新的數(shù)組。具體代碼實(shí)現(xiàn)如下:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            copy[i] = arr[i];
        }
    }

這是我們一般會(huì)想到的方法,下面將一些JAVA為我們提供的一些比較方便的方法。

Arrays.copyOf方法

因?yàn)槲沂强截惖恼蛿?shù)組,所以我用的就是拷貝整型數(shù)組的Arrays.copyOf方法。也可以拷貝其它類型的數(shù)組,并不是只能拷貝整型數(shù)組。

下面就以拷貝整型數(shù)組來講解Arrays.copyOf方法,我們先來看一下Arrays.copyOf方法底層的原碼:

public static int[] copyOf(int[] original, int newLength) {
        int[] copy = new int[newLength];
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }

我們可以看到Array.copyOf方法的返回值是是一個(gè)整型數(shù)組,而形參是有兩個(gè)參數(shù),一個(gè)是整型數(shù)組,另外一個(gè)是一個(gè)整型的變量。

形參中整型數(shù)組就是我們要拷貝數(shù)組的數(shù)組名

形參中的整型變量就是我們要拷貝數(shù)組的長度

因?yàn)槭怯蟹祷刂档?,所以我們?cè)谑褂肁rrays.copyOf方法的時(shí)候,要有數(shù)組來接收返回值。代碼實(shí)現(xiàn)如下:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy =Arrays.copyOf(arr,arr.length);
    }

注意:拷貝的長度是可以超過要拷貝數(shù)組的長度的,如果超過了拷貝數(shù)組的長度的話,那么多出來的元素值就為0;比如:我要拷貝arr數(shù)組,但是arr數(shù)組的大小為5,如果我在拷貝的時(shí)候,將arr.length*2了,那么copy這個(gè)數(shù)組大小就是變成10,并且6~10個(gè)元素值為0.這也算是擴(kuò)容。

Arrays.copyofRange方法

如果我們要拷貝部分?jǐn)?shù)組的一部分,就可以使用Arrays.copyRange這個(gè)方法。同上一樣,也是用拷貝整型數(shù)組進(jìn)行講解,我們先看一下它底層的原碼:

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

我們通過Arrays.copyRange的原碼可以看到返回值是一個(gè)整型的數(shù)組,而形參是一個(gè)整型數(shù)組,兩個(gè)整型的變量。

形參中的整型數(shù)組就是要拷貝的數(shù)組的數(shù)組名

形參中的兩個(gè)整型變量from和to就是你要拷貝數(shù)組元素的范圍,注意這個(gè)范圍是[form,to)是左閉右開的,不包括to那個(gè)位置的元素。代碼實(shí)現(xiàn)如下:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = Arrays.copyOfRange(arr,1,3);
    }

注意:數(shù)組下標(biāo)是從0開始的,1~3號(hào)的元素是指2,3,4.但是右邊是開區(qū)間,所以不包括4,因此copy這個(gè)數(shù)組知識(shí)拷貝了2和3這兩個(gè)元素。

System.arraycopy方法

然后我們來講一下System.arraycopy方法,其實(shí)細(xì)心的同學(xué)已經(jīng)發(fā)現(xiàn)了,在前面兩個(gè)方法的原碼中都有System.arraycopy方法,他們的底層也是靠System.arraycopy方法來實(shí)現(xiàn)的。我們來先看一下它底層的原碼

public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

Java數(shù)組拷貝源碼分析

System.arraycopy是看不到實(shí)現(xiàn)的原碼的,原因在于native,它的底層是C/C++來實(shí)現(xiàn)的。但是native方法的優(yōu)點(diǎn)就是執(zhí)行速度非???。代碼實(shí)現(xiàn)如下:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = new int[arr.length];
        System.arraycopy(arr,0,copy,0,arr.length);
    }

此時(shí)拷貝的是arr整個(gè)數(shù)組,如果想要部分拷貝,可以通過改變形參來完成部分拷貝

clone方法

最后一個(gè)是數(shù)組名.clone這個(gè)方法,這個(gè)方法了解即可,代碼實(shí)現(xiàn)如下:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = arr.clone();
    }

這樣就拷貝完了,這種方法主要是產(chǎn)生了對(duì)象的一個(gè)副本,地址還是不一樣的。

關(guān)于“Java數(shù)組拷貝源碼分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

本文名稱:Java數(shù)組拷貝源碼分析
網(wǎng)站地址:http://chinadenli.net/article20/jggeco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、虛擬主機(jī)、做網(wǎng)站、微信小程序、自適應(yīng)網(wǎng)站、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
欧美日韩国内一区二区| 暴力三级a特黄在线观看| 欧美国产日产在线观看| 中文字幕精品人妻一区| 国产性色精品福利在线观看| 午夜传媒视频免费在线观看| 久一视频这里只有精品| 小草少妇视频免费看视频| 中文字幕91在线观看| 欧美一区二区三区99| 91亚洲熟女少妇在线观看| 日韩中文字幕人妻精品| 天堂热东京热男人天堂| 国产级别精品一区二区视频| 国产一区二区久久综合| 青草草在线视频免费视频| 欧美黄色成人真人视频| 国产综合一区二区三区av| 亚洲av专区在线观看| 日韩精品一级片免费看| 国产精品丝袜一二三区| a久久天堂国产毛片精品| 亚洲第一区二区三区女厕偷拍| 在线日韩欧美国产自拍| 黄色片一区二区三区高清| 久久精品偷拍视频观看| 内射精品欧美一区二区三区久久久| 成人午夜激情在线免费观看| 亚洲中文字幕在线观看四区| 国产激情一区二区三区不卡| 国产人妻熟女高跟丝袜| 亚洲视频一区自拍偷拍另类| 国产日产欧美精品视频| 国产日韩精品欧美综合区| 精品久久久一区二区三| 亚洲熟女诱惑一区二区| 日韩精品日韩激情日韩综合| 欧美日韩亚洲国产av| 国产又粗又黄又爽又硬的| 东京热男人的天堂一二三区| 亚洲专区中文字幕在线|