兩者都是常用來創建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<>();
}
}