java 中Array 和 ArrayList 有何区别?

Array是固定大小的原始数据结构,可存基本类型和对象,性能高;ArrayList来自java.util包,动态扩容,仅存对象,操作灵活但稍慢。

Java 中 ArrayArrayList 都用于存储多个元素,但它们在使用方式和特性上有明显区别。

1. 类型与所属包

Array 是 Java 的原生数据结构,属于语言层面的一部分,不需要导入任何包。它可存储基本类型(如 int、char)和对象类型。

ArrayList 属于 java.util 包,是一个类,只能存储对象类型(包括包装类,如 Integer、String),不能直接存基本类型。

2. 大小是否固定

Array 在创建时必须指定长度,大小固定,无法动态扩容或缩容。

ArrayList 内部基于数组实现,但支持动态扩容。当元素数量超过当前容量时,会自动创建更大的数组并复制内容。

3. 常用操作灵活性

Array 提供的 API 很少,添加、删除元素需要手动操作,比如使用循环或 System.arraycopy。

ArrayList 提供了丰富的操作方法,比如:

  • add(element):添加元素
  • remove(index):删除指定位置元素
  • size():获取元素个数
  • contains(element):判断是否包含某元素

4. 遍历与性能

两者都支持 for 循环和增强 for 循环遍历。Array 访问速度略快,因为是底层结构,内存连续。

ArrayList 因为有自动装箱拆箱(使用包装类)、扩容机制,在频繁增删场景下可能稍慢,但开发效率更高。

基本上就这些。Array 更轻量、高效,适合已知大小且不常变动的场景;ArrayList 更灵活,适合元素数量不确定或经常变化的情况。选择哪个取决于具体需求。