Java 中 Array、Arrays 和 ArrayList 的区别
1、数组类 ArrayArray 类,位于 java.lang.reflect 包下,它是 Java 中的一个最基本的存储结构,为我们提供了动态创建和访问数组的方法。它是最高效的,但是其容量固定,并且无法动态改变,且只能存放同一数据类型的数据。Array 类也不能被实例化(不能 new,可以用 newInstance() ),因为它的构造器被 private所修饰;不能被继承,因为该类被 fi..
1、数组类 Array
Array 类,位于 java.lang.reflect 包下,它是 Java 中的一个最基本的存储结构,为我们提供了动态创建和访问数组的方法。它是最高效的,但是其容量固定,并且无法动态改变,且只能存放同一数据类型的数据。
Array 类也不能被实例化(不能 new,可以用 newInstance() ),因为它的构造器被 private所修饰;不能被继承,因为该类被 final 修饰。
测试:
public static void main(String[] args) {
// get 和 set测试:
int[] array = {1, 2, 3, 4};
System.out.println(Array.getInt(array, 2));// 3
Array.setInt(array, 2, 33);
System.out.println(Array.getInt(array, 2));// 33
// 用Array类创建数组
// 一维数组:
Object o = Array.newInstance(int.class, 4);
int[] array1 = (int[])o;
System.out.println(Arrays.toString(array1));// [0, 0, 0, 0]
// 二维数组:
Object o1 = Array.newInstance(int.class, 3, 4);
int[][] array2 = (int[][])o1;
}
2、静态类 Arrays
Arrays 类与 Collections 相似,位于 java.util 包下,提供了搜索、排序、填充和拷贝等静态方法,是专门用于处理数组的。
3、ArrayList 类
ArrayList 类位于 java.uti 包下,是容器类的一种。与 Array 类相比有以下不同:
(1)ArrayList 是 Array 的复杂版本
ArrayList 内部封装了一个 Object 类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于 ArrayList 的许多方法,如 Index、IndexOf、Contains、Sort 等都是在内部数组的基础上直接调用 Array 的对应方法。
(2)存储的数据类型不同
Array 数组可以包含基本数据类型和引用数据类型,而 ArrayList 不能直接存储基本数据类型,而要存储其包装类对象。
(3)Array 长度不可变,ArrayList 长度可变
Array 的长度是不可变的。而 ArrayList 的长度是动态增长的,每次添加元素时都会检查内部数组的空间是否足够。
(4)ArrayList 更多样化
ArrayList 的方法比 Array 更多,功能更强大,比如添加全部 addAll()、删除全部 removeAll() 等,尤其是迭代器 iterator() 的使用。
更多推荐
所有评论(0)