在 Java 中声明(并初始化)String 数组有几种常见的方式,下面我将为你详细介绍最常用的几种方法,并附上代码示例和解释。

声明并指定长度(未初始化元素)
这种方式先创建一个指定长度的数组,但数组中的每个元素都默认为 null。
语法:
String[] arrayName = new String[length];
示例:
// 声明一个可以存储 3 个 String 元素的数组 String[] names = new String[3]; // 此时数组中的元素都是 null System.out.println(names[0]); // 输出: null // 为数组元素赋值 names[0] = "Alice"; names[1] = "Bob"; names[2] = "Charlie"; // 访问数组元素 System.out.println(names[1]); // 输出: Bob
特点:

- 数组的长度在创建时确定,之后不能改变。
- 所有元素被初始化为
null(对于对象类型数组)。
声明并直接初始化元素
这种方式在声明数组的同时,直接为其赋值,数组的长度由初始化列表中的元素数量决定。
语法 1(使用 new 关键字):
String[] arrayName = new String[]{"value1", "value2", "value3"};
示例:
String[] fruits = new String[]{"Apple", "Banana", "Orange"};
// 访问数组元素
System.out.println(fruits[0]); // 输出: Apple
System.out.println(fruits.length); // 输出: 3
语法 2(简写,省略 new String[]):
这是 Java 中最常用、最简洁的写法。
String[] arrayName = {"value1", "value2", "value3"};
示例:
String[] cities = {"Beijing", "Shanghai", "Guangzhou"};
// 访问数组元素
System.out.println(cities[1]); // 输出: Shanghai
System.out.println(cities.length); // 输出: 3
特点:
- 代码更简洁。
- 数组的长度由初始化列表自动确定。
先声明,后初始化
如果你需要先声明数组变量,稍后再进行初始化,可以分两步完成。
示例:
// 第一步:仅声明数组变量,此时数组为 null
String[] books;
// 第二步:创建数组并赋值给变量
books = new String[]{"The Lord of the Rings", "1984", "To Kill a Mockingbird"};
// 访问数组元素
System.out.println(books[0]); // 输出: The Lord of the Rings
String 数组与 List<String> 的区别
在 Java 开发中,你还会经常遇到 List<String>,虽然它们都可以用来存储字符串列表,但有重要区别:
| 特性 | String[] (数组) |
List<String> (列表, 如 ArrayList) |
|---|---|---|
| 长度 | 固定,一旦创建,长度不能改变。 | 动态,可以随时添加或删除元素。 |
| 性能 | 访问速度快(基于索引的随机访问 O(1))。 | 添加/删除元素可能需要扩容,但 ArrayList 在末尾添加时性能很高。 |
| 功能 | 功能较少,只是一个容器。 | 功能丰富,提供了 add(), remove(), size(), sort() 等大量方法。 |
| 类型 | 原始类型(在 Java 中是对象,但语法上更像 C 风格)。 | 泛型集合。 |
| 使用场景 | 需要固定长度的集合。 性能要求极高,且数据量固定。 作为方法参数传递时,可变参数 () 必须用数组。 |
需要动态调整大小的集合。 需要使用集合框架提供的丰富方法。 现代 Java 开发中的首选。 |
示例:将 String[] 转换为 List<String>
String[] array = {"A", "B", "C"};
// 方法1:使用 Arrays.asList() (返回一个固定大小的列表)
List<String> list1 = Arrays.asList(array);
System.out.println(list1); // 输出: [A, B, C]
// list1.add("D"); // 这行代码会抛出 UnsupportedOperationException,因为列表大小固定
// 方法2:创建一个新的 ArrayList (推荐,可以修改)
List<String> list2 = new ArrayList<>(Arrays.asList(array));
list2.add("D");
System.out.println(list2); // 输出: [A, B, C, D]
| 场景 | 推荐方法 |
|---|---|
| 只是声明一个固定大小的数组,稍后赋值 | String[] myArray = new String[10]; |
| 声明并立即用已知值填充数组 | String[] myArray = {"A", "B", "C"}; (最常用) |
| 先声明,稍后用已知值填充 | String[] myArray; ... myArray = new String[]{"A", "B"}; |
| 需要动态添加/删除元素 | 使用 ArrayList<String> |
对于大多数现代 Java 应用程序,如果你需要一个可以改变大小的字符串集合,ArrayList<String> 通常是比 String[] 更好的选择,但如果你明确知道数据量且需要高性能,或者必须使用可变参数,String[] 是合适的。
