<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Ytl's Java Blog

    厚積而薄發(fā)---每一天都是一個(gè)全新的開始

    Java 原碼代碼學(xué)習(xí)

    Posted on 2011-09-24 15:30 ytl 閱讀(297) 評論(0)  編輯  收藏 所屬分類: 學(xué)習(xí)總結(jié)
    ArrayList
           關(guān)于Java中的transient,volatile和strictfp關(guān)鍵字 http://www.iteye.com/topic/52957
           (1), ArrayList底層使用Object數(shù)據(jù)實(shí)現(xiàn), private transient Object[] elementData;且在使用不帶參數(shù)的方式實(shí)例化時(shí),生成數(shù)組默認(rèn)的長度是10。
          (2),  add方法實(shí)現(xiàn)
          public boolean add(E e) {
               //ensureCapacityInternal判斷添加新元素是否需要重新擴(kuò)大數(shù)組的長度,需要則擴(kuò)否則不
              ensureCapacityInternal(size + 1);  // 此為JDK7調(diào)用的方法 JDK5里面使用的ensureCapacity方法
              elementData[size++] = e; //把對象插入數(shù)組,同時(shí)把數(shù)組存儲的數(shù)據(jù)長度size加1
              return true;
          }
         JDK 7中 ensureCapacityInternal實(shí)現(xiàn)
       private void ensureCapacityInternal(int minCapacity) {
            modCount++;修改次數(shù)
            // overflow-conscious code
            if (minCapacity - elementData.length > 0)
                grow(minCapacity);//如果需要擴(kuò)大數(shù)組長度
        }
    /**
         * The maximum size of array to allocate. --申請新數(shù)組最大長度
         * Some VMs reserve some header words in an array.
         * Attempts to allocate larger arrays may result in
         * OutOfMemoryError: Requested array size exceeds VM limit  --如果申請的數(shù)組占用的內(nèi)心大于JVM的限制拋出異常
         */
        private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;//為什么減去8看注釋第2行
        /**
         * Increases the capacity to ensure that it can hold at least the
         * number of elements specified by the minimum capacity argument.
         *
         * @param minCapacity the desired minimum capacity
         */
        private void grow(int minCapacity) {
            // overflow-conscious code
            int oldCapacity = elementData.length;
            int newCapacity = oldCapacity + (oldCapacity >> 1); //新申請的長度為old的3/2倍同時(shí)使用位移運(yùn)算更高效,JDK5中: (oldCapacity *3)/2+1
            if (newCapacity - minCapacity < 0)  
                newCapacity = minCapacity; 
            if (newCapacity - MAX_ARRAY_SIZE > 0) //你懂的
                newCapacity = hugeCapacity(minCapacity);
            // minCapacity is usually close to size, so this is a win:
            elementData = Arrays.copyOf(elementData, newCapacity);
        }
     //可以申請的最大長度
        private static int hugeCapacity(int minCapacity) { 
            if (minCapacity < 0) // overflow
                throw new OutOfMemoryError();
            return (minCapacity > MAX_ARRAY_SIZE) ?
                Integer.MAX_VALUE :
                MAX_ARRAY_SIZE;
        }



    主站蜘蛛池模板: 亚洲精品中文字幕无乱码麻豆| 久久久久亚洲AV成人网人人软件| 亚洲av福利无码无一区二区 | 午夜电影免费观看| 亚洲精品视频久久| 2021在线观看视频精品免费| 亚洲AV无码乱码国产麻豆| baoyu777永久免费视频| 国产日产亚洲系列| 国产免费黄色无码视频| 亚洲国产美女精品久久久久∴| 一区二区在线视频免费观看| 亚洲色欲一区二区三区在线观看| 国产高潮久久免费观看| 亚洲va无码手机在线电影| 久久国产乱子伦精品免费看| 99久久精品国产亚洲| 97在线观看永久免费视频| 一本色道久久88—综合亚洲精品| 国产美女被遭强高潮免费网站| 国产亚洲情侣久久精品| 亚洲一区精品无码| 97av免费视频| 亚洲欧美成人综合久久久| 亚洲国产精品尤物yw在线| 国精产品一区一区三区免费视频| 亚洲∧v久久久无码精品| 色片在线免费观看| 国产亚洲视频在线| 国产精品亚洲精品日韩已满| 亚洲电影免费观看| 亚洲AV综合色区无码一二三区| 亚洲无码高清在线观看| 亚洲视频在线观看免费| 亚洲高清有码中文字| 在线观看亚洲天天一三视| **一级一级毛片免费观看| 337P日本欧洲亚洲大胆艺术图| 亚洲无码在线播放| 妞干网免费视频在线观看| 一个人看的www在线免费视频|