區別:java
數組特色:大小固定,只能存儲相同數據類型的數據數組
集合特色:大小可動態擴展,能夠存儲各類類型的數據安全
區別:性能
數組和集合都是java中的容器。spa
一、數組聲明瞭它容納的元素的類型,而集合不聲明。code
二、數組是靜態的,一個數組實例具備固定的大小,一旦建立了就沒法改變容量了,並且生命週期也是不能改變的,還有數組會作邊界檢查,若是發現有越界現象,會報RuntimeException異常錯誤,固然檢查邊界會以效率爲代價。對象
而集合的長度是可變的,能夠動態擴展容量,能夠根據須要動態改變大小,集合提供更多的成員方法,能知足更多的需求。生命週期
三、數組的存放的類型只能是一種,Object數組能夠存多種類型;集合存放的類型能夠不是一種,只能夠存儲對象,也能夠存儲基本數據類型,但必須是基本類型的包裝類(不加泛型時添加的類型是Object)。string
集合能夠存放不一樣類型的引用類型,由於存入集合的元素都被轉化成了Object類型,以後再引用集合中的類型須要強制類型轉換,這就致使了集合的類型不安全,以及類型轉化的性能損耗io
四、數組是java語言中內置的數據類型,是線性排列的數組,因此能夠快速訪問其餘的元素。
數組轉換爲集合:
Arrays.asList(數組)
示例:
int[] arr = {1,3,4,6,6};
Arrays.asList(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
集合轉換爲數組:
集合.toArray();
示例:
在java中,數組不能放不一樣數據類型的值。
多態
定義數組類型的時候定義爲父類,而存進數組爲父類的子類
public class test2 { public static void main(String args[]) { father []a = new father[2]; a[0] = new son(); a[1] = new son2(); }}class father{ int i = 0; }class son extends father{ int x = 0;}class son2 extends father{ int y = 0;}