首页 > 其他 > 详细

问题记录

时间:2019-08-20 16:20:23      阅读:87      评论:0      收藏:0      [点我收藏+]

ArrayList指定初始容量后不能真正初始化

创建一个ArrayList对象,传入整型参数

public void arrayListConstructor(){
        ArrayList<Object> arr = new ArrayList<>(5);
        System.out.println(arr.size());
     // 0 
    }

结果调用size方法,返回结果却是0。如果调用arr.get(3)会抛出OutOfArrayBoundary Exception。注意这里报的是数组越界异常而不是空指针。

虽说ArrayList与数组很相像,但这一点是不同的。

如果声明一个数组:

int[] arr = new arr[5];
System.out.println(arr.length);

得到的答案是5。并且数组的元素全部默认初始化为0,即访问arr[3]得到0而不会抛出异常。

如果声明的不是基本类型的数组,而是对象类型的数组,数组中的内容全部被初始化为null。

Object[] arr = new Object[5];
System.out.println(arr.length);
Object object = arr[3];//object是空指针。

而对于ArrayList, 初始化只是指定容量

List<Object> list = new ArrayList<>(5);
System.out.println(list.size());//输出0
Object object = list.get(3);//此处会报数组越界异常

不像C++有初始化函数memeset, Java在这一点有点不方便。

问题记录

原文:https://www.cnblogs.com/greatLong/p/11383432.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!