静态初始化
静态初始化是指在创建数组的同时,就为数组的每个元素分配内存空间并赋值,数组的长度由初始化值的个数决定。

使用 new 关键字(推荐)
这是最常见和推荐的方式,语法清晰。
// 语法:数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3, ...};
String[] names = new String[]{"Alice", "Bob", "Charlie", "David"};
// 访问数组元素
System.out.println(names[0]); // 输出: Alice
System.out.println(names[2]); // 输出: Charlie
// 获取数组长度
System.out.println("数组长度是: " + names.length); // 输出: 数组长度是: 4
简化的静态初始化(常用)
这种方式省略了 new 数据类型[] 部分,编译器会自动推断数组的类型和长度。
// 语法:数据类型[] 数组名 = {元素1, 元素2, 元素3, ...};
String[] fruits = {"Apple", "Banana", "Orange"};
System.out.println(fruits[1]); // 输出: Banana
System.out.println("数组长度是: " + fruits.length); // 输出: 数组长度是: 3
动态初始化
动态初始化是先创建一个指定长度的数组,此时数组中的每个元素都会被赋予一个默认值(对于 String 类型,默认值是 null),之后,你可以在需要时为每个元素赋值。
语法
// 语法:数据类型[] 数组名 = new 数据类型[数组长度]; String[] students = new String[3]; // 创建一个长度为3的String数组
students 数组的内容是:{null, null, null}

赋值
你可以通过索引来为每个元素赋值。
String[] students = new String[3]; // 为数组元素赋值 students[0] = "张三"; students[1] = "李四"; // students[2] 没有赋值,所以它仍然是 null System.out.println(students[0]); // 输出: 张三 System.out.println(students[1]); // 输出: 李四 System.out.println(students[2]); // 输出: null
注意:对于引用类型(如 String),动态初始化后元素默认为 null,如果你尝试直接访问一个未赋值的元素并调用其方法,会抛出 NullPointerException。
String[] temp = new String[2]; // temp[0] 是 null // temp[0].toUpperCase(); // 这行代码会抛出 NullPointerException
特殊情况:初始化一个空数组
有时候你可能需要创建一个长度为0的数组,通常用作方法的返回值,表示“没有找到任何元素”。
// 方式一
String[] emptyArray1 = new String[0];
// 方式二
String[] emptyArray2 = {};
System.out.println(emptyArray1.length); // 输出: 0
System.out.println(emptyArray2.length); // 输出: 0
多维字符串数组初始化
多维数组本质上是“数组的数组”,初始化方式与一维数组类似。

静态初始化
// 创建一个 2x3 的二维字符串数组
String[][] matrix = {
{"A", "B", "C"},
{"D", "E", "F"}
};
System.out.println(matrix[0][0]); // 输出: A
System.out.println(matrix[1][2]); // 输出: F
System.out.println("行数: " + matrix.length); // 输出: 行数: 2
System.out.println("列数: " + matrix[0].length); // 输出: 列数: 3
动态初始化
// 创建一个 3x3 的二维字符串数组,元素初始为 null String[][] dynamicMatrix = new String[3][3]; dynamicMatrix[0][0] = "Hello"; dynamicMatrix[1][1] = "World"; System.out.println(dynamicMatrix[0][0]); // 输出: Hello System.out.println(dynamicMatrix[1][1]); // 输出: World System.out.println(dynamicMatrix[2][2]); // 输出: null
总结与最佳实践
| 初始化方式 | 语法 | 特点 | 适用场景 |
|---|---|---|---|
| 静态初始化 | String[] arr = new String[]{"a", "b"};String[] arr = {"a", "b"}; |
在创建时就确定所有元素,数组长度固定。 | 当你知道数组中所有元素时,推荐使用,第二种更简洁。 |
| 动态初始化 | String[] arr = new String[3];arr[0] = "a"; |
先指定长度,后逐个赋值,元素初始为 null。 |
当数组元素数量已知,但具体值需要在运行时确定时使用。 |
| 空数组 | String[] arr = new String[0];String[] arr = {}; |
长度为0,用于表示“没有数据”的特殊情况。 | 作为方法返回值,表示查询结果为空。 |
核心要点:
new关键字:用于在堆内存中为数组分配空间。- 大括号:用于在静态初始化时提供初始值列表。
length属性:通过数组名.length可以获取数组的长度。null默认值:对于String等引用类型,动态初始化后元素默认为null,需要注意NullPointerException。
