Java中ArrayList數(shù)組擴(kuò)容內(nèi)存問題

集合中ArrayList,一直認(rèn)為,擴(kuò)容的話,就是從新建了一個(gè)對象,然后把新對象的引用重新賦給當(dāng)前對象,最近想想不對。

1、ArrayList:對象中有兩個(gè)變量

transientObject[] elementData; 用來存儲數(shù)據(jù) 和private int size;用來記錄當(dāng)前數(shù)組長度

2、當(dāng)我們new ArrayList()的時(shí)候,這時(shí)我們在內(nèi)存中開辟了一塊ArrayList()的內(nèi)存空間,注意,這里不是Array的內(nèi)存空間,本身ArrayList是沒有任何意義的,有意義的是他的elementData這個(gè)變量

3、當(dāng)觸發(fā)擴(kuò)容的時(shí)候,最后是通過System.arraycopy的方式去拷貝數(shù)組的,就是說聲明一個(gè)更大的數(shù)組,然后把老數(shù)組的元素拷貝到這個(gè)新數(shù)組中然后實(shí)現(xiàn)擴(kuò)容

4、擴(kuò)容時(shí)這里的elementData的內(nèi)存地址必然會發(fā)生改變(其實(shí)我也不太確定)

5、所以,ArrayList()這個(gè)內(nèi)存地址是不會改變的,但是他的內(nèi)部的elementData是改變的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,476評論 0 16
  • 一、對于ArrayList需要掌握的七點(diǎn)內(nèi)容 ArrayList的創(chuàng)建:即構(gòu)造器 往ArrayList中添加對象:...
    rochuan閱讀 946評論 0 0
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,658評論 0 3
  • 一.線性表 定義:零個(gè)或者多個(gè)元素的有限序列。也就是說它得滿足以下幾個(gè)條件:??①該序列的數(shù)據(jù)元素是有限的。??②...
    Geeks_Liu閱讀 2,775評論 1 12
  • 從前波斯國王有一個(gè)兒子,愛上了一個(gè)牧羊女。他對他的父親說:“父王,我愛上了一個(gè)牧羊人的女兒,我要娶她為妻?!眹跽f...
    你是我de符合閱讀 591評論 0 2

友情鏈接更多精彩內(nèi)容