阅读时间: 10分钟
两者都是常用来创建array的方法,
虽然目的相同,但本质上却有很大差异。
本质上,
Array是Java中的基本功能。
而ArrayList就是Collection Framework的一部分。
因此就有着完全不同的使用方式!
创建方式不同
Array
是一个有固定大小的Array。
每次创建一个新的Array时,都需要为它设定一个大小。
而且在创建后,是不能再更改大小。
int arr[] = new int[10]
ArrayList
是一个有浮动大小的Array。
每次创建一个新的Array时,不需要为它设定大小。
因为在创建后,你可以随意更改它的大小。
另外,它是List interface的实作。
ArrayList arrL = new ArrayList();
新增元素及存取元素的方式不同
Array透过[]的方式新增元素而ArrayList就透过add()。
Array透过[]的方式存取元素而ArrayList就透过get()。
import java.util.ArrayList; import java.util.Arrays; class ArrayTest { public static void main(String args[]) { /* Array */ int[] arr = new int[2]; // 新增元素到Array arr[0] = 1; arr[1] = 2; // 存取元素 System.out.println(arr[0]); /*ArrayList*/ ArrayList<Integer> arrL = new ArrayList<Integer>(2); // 新增元素到ArrayList arrL.add(1); arrL.add(2); // 存取元素 System.out.println(arrL.get(0)); } }
资料结构(Data type)的类别不同
Array 可以包含primitive data types 和object entities。
ArrayList 只可以包含object entries 但不支持primitive data types。
import java.util.ArrayList; import java.util.Arrays; class ArrayTest{ public static void main(String args[]) { // 允许primitive data types int[] array = new int[3]; // 允许 object entities Test[] array1 = new Test[3]; // 不允许primitive data types// 当运行以下一句的code时,会出现error ArrayList<char> arrL = new ArrayList<char>(); // 允许 object entities ArrayList<Integer> arrL1 = new ArrayList<>(); ArrayList<String> arrL2 = new ArrayList<>(); ArrayList<Object> arrL3 = new ArrayList<>(); } }