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