问题记录

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

全部评论

相关推荐

Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务