我終於弄懂了arraycopy

2021-10-02 19:29:23 字數 1346 閱讀 2229

最近在看arraylist原始碼時,多次遇到了system.arraycopy()這個函式,於是就索性把它好好的研究了一番,感覺整個研究過程還是挺有意義的,也有了新的理解和收穫,在此做個記錄。

讓我們先來看一下system.arraycopy()的原始碼:

不知道大家在看它的時候有沒有什麼疑問呢,如果有的話,不如看一下我加了注釋的原始碼吧~

如果看了我標的注釋,你還是有疑問,沒關係,我還有栗子(誰叫我是畫圖小能手呢):

再來看看吧~

好的,通過上面搞笑的,我終於畫懂了arraycopy()。

如果你還有點懵懂,那要不你也動手畫一下,或許有不一樣的收穫哦~

最後,我們再來深入反思一下下面這一部分的**:

為什麼這裡要 從後往前複製呢?

這一塊的**意思是:

當 src==dst ,即在同乙個陣列內進行複製 且 srcpos < dstpos < srcpos + length 時,要採用從後往前複製。

我們還是用圖來說話吧:

由於這裡 dstpos 即使目標陣列的位置,又是原陣列的位置。它處於很尷尬的重合位置。

如果從先往後複製,

第①步 dst[2]=src[0]沒問題;

第②步 dst[3]=src[1]沒問題;

第③步 dst[4]=src[2] 有問題!因為的位置已經改變了!

所以說,當在同乙個陣列內進行複製 且 srcpos < dstpos < srcpos + length 時,必須要採用從後往前的複製,才不會出現資料已經被修改的問題。

積累點滴,做好自己~

我終於弄懂了Python的裝飾器(三)

此系列文件 1.我終於弄懂了python的裝飾器 一 2.我終於弄懂了python的裝飾器 二 3.我終於弄懂了python的裝飾器 三 4.我終於弄懂了python的裝飾器 四 我可以使用裝飾器做什麼?裝飾器看起來很酷而且功能強大,但是展示乙個實際的例子會更清晰。使用的場景有1000種可能性。但是...

時隔七個月,我終於弄懂了漢諾塔的思想

目錄 1.問題描述 2.漢諾塔的分析 3.博主的反思 4.詳解 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按...

迷宮 哈哈 終於懂了BFS

輸入m,n表示m n的迷宮,接下來m n行表示迷宮,用1表示路,0表示牆。輸出左上角到右上角最少步數及走法.輸入 5 5 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 0 1 1 輸出 minimum steps 8 0,0 1,0 2,0 3,0 3,1 ...