大家在刷java面试题时肯定有遇到过《Array 和ArrayList的区别》这个面试题。

今天就来聊聊他们二者的区别。

长度的区别

Array是数组,声明好之后,其长度就已经固定。

ArrayList底层是用数组实现的,但是ArrayList的长度是可变的,在每次添加时,如果发现空间不足的话,会创建一个长度大概是原来1.5倍的新数组(java8源码),然后把原来的数组元素复制过去。

Array就好像是已经定制好的柜子,就是那么多格子。

而ArrayList是可以自己组装的柜子,格子不够时,就再拼装一些。

JavaArray和ArrayList的使用 java array和list区别_Java array和ArrayList

ArrayList长度增长

存放数据的区别

Array可以除了可以存放对象类型的数据之外,还可以存放基本数据类型的数据。

而ArrayList只能存放对象数据类型的数据,因为它的类在定义时已经是针对Object的子类做了泛型的约束。

ArrayList如果确实要存放基本数据类型的数据,那只能存放基本数据类型对应的包装类的数据。在数据的存取时可能会涉及到java基本数据类型的自动装箱、自动拆箱。

使用方法的区别

Array数组只能通过数组下标来对指定位置的元素进行变更。

而ArrayList在Array的基础上增加了很多的方法。比如add,addAll,remove,removeAll,contains,以及iterator等等多种丰富的功能方法。

效率上的区别

因为ArrayList是在Array的基础上做了各种丰富多样的功能增强,所以ArrayList效率上自然是不如Array效率高了。

使用场景的区别

针对以上各种区别来说,如果是在整个过程中长度不会变化的话,可是使用Array数组。

如果在使用过程中,大小不固定,可能需要动态增长的话,就需要使用ArrayList了。

但是如果是频繁的增加删除元素的话,ArrayList就又显得不合适了。这块可以翻阅一下我的另一篇文章分析java面试题《ArrayList和LinkedList的区别》。

今天就到这里。大家有什么问题或意见建议都可以在留言里告诉我。