Java中ArrayList初始化并添加元素有三种方式:一是先new ArrayList()再add(),兼容所有版本;二是用Arrays.asList()后包装为ArrayList,适合固定数据;三是Java 9+用List.of()创建不可变列表再包装。需区分声明、初始化、添加步骤,避免空指针和语法错误。

Java 中 ArrayList 初始化并添加元素,主要有两种常用方式:先创建再添加,或在创建时直接初始化(Java 9+ 支持)。关键在于区分 声明、初始化、添加 三个步骤,避免空指针或语法错误。
方式一:先 new ArrayList(),再用 add() 添加
这是最基础、兼容性最好的写法,适用于所有 Java 版本:
- 声明并初始化一个空的 ArrayList(需指定泛型类型,如 String)
- 调用 add() 方法逐个插入元素(可重复调用)
- 注意:不能用数组赋值语法(如 list = {"a", "b"}),会编译报错
示例:
ArrayList<String> list = new ArrayList<>(); // Java 7+ 可省略右侧泛型
list.add("苹果");
list.add("香蕉");
list.add("橙子");
方式二:用 Arrays.asList() 快速初始化(适合固定初始数据)
适用于已知全部初始元素、且后续不频繁增删的场景:
立即学习“Java免费学习笔记(深入)”;
- Arrays.asList() 返回的是固定大小的 List(底层是数组),不能直接 add/remove
- 若需要动态操作,必须再包装成真正的 ArrayList:new ArrayList(Arrays.asList(...))
- 泛型类型由传入元素自动推断,但基本类型数组(如 int[])会被整体当作一个元素,慎用
示例:
ArrayList<String> list = new ArrayList<>(Arrays.asList("苹果", "香蕉", "橙子"));
方式三:Java 9+ 的 List.of()(只读,不可修改)
如果只需要一个不可变的初始列表(不打算 add/remove),可用更简洁的写法:
- List.of() 创建的是不可变 List,调用 add() 会抛 UnsupportedOperationException
- 若确实需要可变 ArrayList,仍要包装一次:new ArrayList(List.of(...))
- 支持 null 元素(但 List.of() 本身不允许 null,会抛 NullPointerException)
示例:
ArrayList<String> list = new ArrayList<>(List.of("苹果", "香蕉", "橙子"));
常见错误提醒
- ArrayList<String> list; 声明但未初始化 → 后续 add() 会触发 NullPointerException
- ArrayList<String> list = new ArrayList<>(); list = {"a","b"}; → 语法错误,{} 只用于数组或静态初始化块
- 使用原始类型(如 ArrayList list)→ 编译通过但失去泛型检查,不推荐


















