EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA两个空数组的区别

EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA两个都是ArrayList的成员变量,并且都被声明为static final;更为核心的是,这两个都是空数组,那么问题来了,为什么要这样去规范呢?

对于这类问题,直接看:

    /**
     * Constructs an empty list with the specified initial capacity.
     *
     * @param  initialCapacity  the initial capacity of the list
     * @throws IllegalArgumentException if the specified initial capacity
     *         is negative
     */
    public ArrayList(int initialCapacity) {
        if (initialCapacity > 0) {
            this.elementData = new Object[initialCapacity];
        } else if (initialCapacity == 0) {
            this.elementData = EMPTY_ELEMENTDATA;
        } else {
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
        }
    }

    /**
     * Constructs an empty list with an initial capacity of ten.
     */
    publi
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
EMPTY_ELEMENTDATADEFAULTCAPACITY_EMPTY_ELEMENTDATA是ArrayList的成员变量,它们都被声明为static final。EMPTY_ELEMENTDATA是一个数组,而DEFAULTCAPACITY_EMPTY_ELEMENTDATA是一个长度为0的数组。为什么要使用这样的规范呢? 这样规范的目的是为了节省内存间。在ArrayList的实现中,当我们使用无参构造函数创建一个ArrayList对象时,它会使用DEFAULTCAPACITY_EMPTY_ELEMENTDATA来初始化elementData数组。由于elementData数组是一个Object类型的数组,而DEFAULTCAPACITY_EMPTY_ELEMENTDATA是一个长度为0的数组,这样就可以避免在创建ArrayList对象时分配不必要的内存间。 而当我们向ArrayList对象添加元素时,如果elementData数组的长度不够,ArrayList会根据需要自动扩容。在扩容时,会创建一个新的数组,并将原来的元素复制到新数组中。这个新数组的长度会根据ArrayList的规则进行计算,以确保能容纳所有的元素。 因此,在使用ArrayList时,EMPTY_ELEMENTDATADEFAULTCAPACITY_EMPTY_ELEMENTDATA的存在可以提高性能和节省内存间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [EMPTY_ELEMENTDATADEFAULTCAPACITY_EMPTY_ELEMENTDATA两个数组区别](https://blog.csdn.net/weixin_43390562/article/details/101236833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值