问题记录

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在这一点有点不方便。

TALK IS CHEAP, SHOW ME THE CODE
原文地址:https://www.cnblogs.com/greatLong/p/11383432.html