Java 数组

Java数组

  • 静态初始化
    • //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为4

      String[] computers = {"Dell", "Lenovo", "Apple", "Acer"};

    • //只是指定初始值,并没有指定数组的长度,但是系统为自动决定

      String[] names = new String[]{"多啦A梦", "大雄", "静香"};

  • 动态初始化
    • //只是指定了数组的长度,并没有显示的为数组指定初始值,但是系统会默认给数组数组元素分配初始值为null

      String[] cars = new String[4];

  • 数组的存储
    • 无论使用的数组属于什么类型,数组标识符实际都是指向真实对象的一个句柄
    • 堆中的数组对象唯一能访问的数组成员是只读的length,方法是[]
  • 二维数组
    • int[][] nums = new int[2][2];

      nums[0][1] = 2;

  • Object 类的toString()方法默认为类名+对象地址
  • 编译期检查
    • 是否为数组变量创建对象
    • 是否插入错误类型
  • Arrays 方法
    • asList():将数组转变为List,但是,这个生成的List,它是固定长度的,如果对其进行add或者remove的操作,会抛出UnsupportedOperationException

      源码中:

      public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); }

      方法asList返回的是new ArrayList(a)。但是,这个ArrayList并不是java.util.ArrayList,它是一个Arrays类中的重新定义的内部类。从这个内部类ArrayList的实现可以看出,它继承了类AbstractList,但是没有重写add和remove方法,没有给出具体的实现。查看一下AbstractList类中对add和remove方法的定义,如果一个list不支持add和remove就会抛出UnsupportedOperationException。