復(fù)制數(shù)組的 System.arraycopy() 方法

方法描述:
void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);

參數(shù):
src:源數(shù)組;
srcPos:源數(shù)組要復(fù)制的起始位置;
dest:目的數(shù)組梭纹;
destPos:目的數(shù)組放置的起始位置恋技;
length:復(fù)制的長度;

簡單的描述訴這方法的作用就是,從源數(shù)組 src 的 srcPos 位置拷貝length長度 的數(shù)據(jù)(length個元素)到目標(biāo)數(shù)組 dest 的 destPos 位置崇裁,因為此方法是由C/C++實現(xiàn)的匕坯,效率極高,JDK中有關(guān)于集合拔稳,數(shù)組的拷貝操作底層基本上調(diào)用的都是此方法葛峻。

使用這是函數(shù)時特別要注意的是:
1、容易發(fā)生越界:函數(shù)本身并不會檢查目標(biāo)數(shù)組容量是否足夠巴比,很容易引起下標(biāo)越界术奖,使用時最好先對參數(shù)做檢查。
2轻绞、淺拷貝:由于它的復(fù)制是淺拷貝(shallow copy)采记,如果數(shù)組里面的是可變對象,因為復(fù)制后的數(shù)組與原數(shù)組引用的時同一個位置政勃。修改一個數(shù)組的數(shù)據(jù)會引起另外一個數(shù)組的數(shù)據(jù)發(fā)生改變唧龄。

寫了個Demo驗證

package list;

import set.Person;

public class SystemArraycopyDemo {
    
    public static void main(String[] args) {
        
        int[] arr1 = new int[] {1, 2, 3, 4, 5};
        int[] arr2 = new int[arr1.length];
        
        System.arraycopy(arr1, 0, arr2, 0, arr1.length);
        arr1[1] = 3;
        // int 是常量,不會發(fā)生變化
        System.out.printf("arr1[1] = %d, arr[1] = %d\n", arr1[1], arr2[1]);  // 3, 2
        
        Person[] arr3 = new Person[] {new Person("任十七")};
        Person[] arr4 = new Person[arr3.length];
        
        System.arraycopy(arr3, 0, arr4, 0, arr3.length);
        arr3[0].setName("天劍老人");
        // 因為 Person 的實例是可變的對象奸远,所以會影響另一個數(shù)組的
        System.out.printf("arr3[0].name = %s, arr4[0].name = %s\n", arr3[0].getName(), arr4[0].getName());
    }
}

Demo中用到的 Person 類

package set;

import java.util.Objects;

public class Person {
    
    private String name;
    
    public Person() {
        
    }
    public Person(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

結(jié)果

結(jié)果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末既棺,一起剝皮案震驚了整個濱河市讽挟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丸冕,老刑警劉巖耽梅,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晨仑,居然都是意外死亡褐墅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門洪己,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妥凳,“玉大人,你說我怎么就攤上這事答捕∈旁浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵拱镐,是天一觀的道長艘款。 經(jīng)常有香客問我,道長沃琅,這世上最難降的妖魔是什么哗咆? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮益眉,結(jié)果婚禮上晌柬,老公的妹妹穿的比我還像新娘。我一直安慰自己郭脂,他們只是感情好年碘,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著展鸡,像睡著了一般屿衅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莹弊,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天涤久,我揣著相機與錄音,去河邊找鬼忍弛。 笑死拴竹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剧罩。 我是一名探鬼主播栓拜,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幕与?” 一聲冷哼從身側(cè)響起挑势,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啦鸣,沒想到半個月后潮饱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡诫给,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年香拉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片中狂。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凫碌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胃榕,到底是詐尸還是另有隱情盛险,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布勋又,位于F島的核電站苦掘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏楔壤。R本人自食惡果不足惜鹤啡,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹲嚣。 院中可真熱鬧揉忘,春花似錦、人聲如沸端铛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禾蚕。三九已至,卻和暖如春狂丝,著一層夾襖步出監(jiān)牢的瞬間换淆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工几颜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留倍试,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓蛋哭,卻偏偏與公主長得像县习,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容