Array
1.数组存储在连续的内存上.
2.数组的元素都是相同类型或者类型的衍生类型
3.数组可以直接通过下标访问
ArrayList
1.不必在声明ArrayList时指定它的长度,这是由于ArrayList对象的长度是按照其中存储的数据来动态增长与缩减的
2.ArrayList可以存储不同类型的元素.这是由于ArrayList会把它的元素都当作Object来处理.因此加入不同类型的元素是允许的.
3.ArrayList是类型不安全的.因为把不同的类型都当作Object来做处理,很有可能会在使用ArrayList时发生类型不匹配的情况.
4.数组存储值类型时并未发生装箱,但是ArrayList由于把所有类型都当作了Object,所以不可避免的是当插入值类型时会发生装箱操作,在索引取值时会发生拆箱操作.
List<T>
1.List<T>是类型安全的.
2.取消了装箱和拆箱的操作,以及由于引入泛型而无需运行时类型检查
3.融合了Array可以快速访问的优点,以及ArrayList长度可以灵活变化的优点.