zoukankan      html  css  js  c++  java
  • 问题记录

    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
  • 相关阅读:
    4.9Java学习
    我晕了
    注意的
    语句
    第三天JAVA
    JAVA的学习
    JAVA的继承
    JAVA构造方法
    怎么去理解JAVA中类与对象的关系
    Java中三种比较常见的数组排序
  • 原文地址:https://www.cnblogs.com/greatLong/p/11383432.html
Copyright © 2011-2022 走看看