Java SE之底層陣列複製方法

2021-08-14 06:29:10 字數 1501 閱讀 2455

深入學習了一下arraylist,基於動態陣列,當然就少不了很多陣列間的操作,那麼就原始碼中使用到的arrays.copyof(elementdata, newcapacity);這個方法進行一下細節的學習。那麼看一下arrays.copyof的原始碼:

@suppresswarnings

("unchecked"

)public

static

tcopyof

(t original,

int newlength)

由此可見,首先是基於型別的乙個判斷,這個就不看了,下面的system.arraycopy是重點。

public

static

tcopyof

(u original,

int newlength, class<

?extendst[

]> newtype)

由上可以看出最終是呼叫了system.arraycopy的乙個本地方法:

public

static

native

void

arraycopy

(object src,

int srcpos,

object dest,

int destpos,

int length)

;

那麼,看下面乙個簡單的demo,看看方法的五個引數的含義:

public

class

systemcopyarraydemo

;int

dest =

;int srcpos =2;

int destpos =0;

int length =4;

system.

arraycopy

(src,

//源陣列

srcpos,

//複製的源陣列起始位置

dest,

//目的陣列

destpos,

//目的陣列開始複製的起始位置

length)

;//複製的長度;這個長度大小受限於(destpos+length)<= dest.length,否則陣列越界。

system.out.

println

("src:"

+ arrays.

tostring

(src));

//src:[0, 1, 2, 3, 5, 6, 7]

system.out.

println

("dest:"

+ arrays.

tostring

(dest));

//dest:[2, 3, 5, 6]

}}

剖析PHP底層陣列是如何實現的

php是一門入門容易,使用範圍廣泛的語言,以其靈活性以及web後端開發被很多人熟知,也被很多人戲稱 php是世界上最好的語言 本人是一名 忠實 的phper,相信用過php的程式設計師都會體會到php陣列的靈活性,相對傳統的c語言,使用起來很是方便,擁有關聯陣列 key值可以是字串 不需要預定義陣列...

剖析PHP底層陣列是如何實現的

php是一門入門容易,使用範圍廣泛的語言,以其靈活性以及web後端開發被很多人熟知,也被很多人戲稱 php是世界上最好的語言 本人是一名 忠實 的phper,相信用過php的程式設計師都會體會到php陣列的靈活性,相對傳統的c語言,使用起來很是方便,擁有關聯陣列 key值可以是字串 不需要預定義陣列...

陣列方法之forEach底層封裝

foreach方法是es5新增的陣列方法,用於陣列的迴圈遍歷,只有乙個引數,需要傳入乙個函式,很多人說是有三個引數,其實這種說話是錯誤的,是他的引數函式有三個形參,而不是foreach方法有三個引數。1 foreach方法接受乙個函式引數,該函式引數中有三個形參,當然有些形參用不到就可以不宣告。2 ...