java 创建数组的方式(附带源码)

在 Java 中,可以使用多种方式创建数组,下面列举了所有常见的数组创建方式。

1. 直接声明并初始化

int[] arr = {1, 2, 3, 4, 5};

String[] strArr = {"Apple", "Banana", "Cherry"};

🔹 特点:

适用于 已知元素 的情况。无需使用 new 关键字。

2. 使用 new 关键字

int[] arr = new int[5]; // 创建一个长度为5的数组,默认值为0

String[] strArr = new String[3]; // 创建一个长度为3的数组,默认值为null

🔹 特点:

适用于 大小已知但内容未知 的情况。基本类型默认值:

int → 0double → 0.0boolean → falsechar → '\u0000'(空字符)引用类型(如 String)→ null

3. 使用 new 关键字并直接赋值

int[] arr = new int[]{1, 2, 3, 4, 5};

String[] strArr = new String[]{"Java", "Python", "C++"};

🔹 特点:

适用于方法参数传递(如 printArray(new int[]{1, 2, 3});)。不能写 new int[5]{1,2,3,4,5};(错误语法)。

4. 多维数组

4.1 创建并初始化

int[][] matrix = {

{1, 2, 3},

{4, 5, 6},

{7, 8, 9}

};

🔹 特点:

适用于 已知数据,结构清晰。

4.2 使用 new 关键字

int[][] matrix = new int[3][3]; // 创建 3x3 的数组,默认值为 0

🔹 特点:

适用于 大小已知但内容未知。

4.3 不规则二维数组(交错数组)

int[][] jaggedArr = new int[3][];

jaggedArr[0] = new int[]{1, 2};

jaggedArr[1] = new int[]{3, 4, 5};

jaggedArr[2] = new int[]{6};

🔹 特点:

列数不固定,适用于不规则数据。

5. 通过 Arrays 类创建和填充数组

import java.util.Arrays;

public class Main {

public static void main(String[] args) {

int[] arr = new int[5];

Arrays.fill(arr, 7); // 将所有元素初始化为7

System.out.println(Arrays.toString(arr)); // 输出: [7, 7, 7, 7, 7]

}

}

🔹 特点:

Arrays.fill(array, value) 填充数组,常用于初始化。

6. 使用 Stream 创建数组(Java 8+)

import java.util.stream.IntStream;

public class Main {

public static void main(String[] args) {

int[] arr = IntStream.range(1, 6).toArray(); // 创建数组 {1, 2, 3, 4, 5}

System.out.println(Arrays.toString(arr));

}

}

🔹 特点:

适用于 动态生成数组,如 range(1,6) 生成 [1, 2, 3, 4, 5]。

7. 通过 List 转换为数组

import java.util.ArrayList;

import java.util.List;

public class Main {

public static void main(String[] args) {

List list = new ArrayList<>(List.of(1, 2, 3, 4, 5));

Integer[] arr = list.toArray(new Integer[0]); // List 转换为数组

System.out.println(Arrays.toString(arr));

}

}

🔹 特点:

适用于 已存数据在 List 中,需要转换为数组 的情况。

8. 使用 clone() 复制数组

int[] original = {1, 2, 3, 4, 5};

int[] copy = original.clone();

System.out.println(Arrays.toString(copy));

🔹 特点:

深拷贝基本类型数组(对引用类型仅拷贝引用)。

9. 使用 System.arraycopy() 复制部分数组

int[] src = {1, 2, 3, 4, 5};

int[] dest = new int[3];

System.arraycopy(src, 1, dest, 0, 3); // 复制 src[1] 开始的3个元素到 dest

System.out.println(Arrays.toString(dest)); // 输出: [2, 3, 4]

🔹 特点:

适用于 复制数组的部分元素。

10. 使用 Arrays.copyOf() 复制数组

import java.util.Arrays;

public class Main {

public static void main(String[] args) {

int[] original = {1, 2, 3, 4, 5};

int[] copy = Arrays.copyOf(original, 3); // 复制前3个元素

System.out.println(Arrays.toString(copy)); // 输出: [1, 2, 3]

}

}

特点:

适用于 调整大小的复制(新数组长度可以大于或小于原数组)。

总结

方法适用场景备注{} 直接初始化已知元素不能用于方法参数new 关键字仅知道大小默认填充 0/nullnew + {}结合两者适合动态创建多维数组需要行列数据交错数组适用于不同列数Arrays.fill()需要批量初始化常用于默认值填充Stream.toArray()需要动态生成适用于 Java 8+List.toArray()List 转数组适用于 List 存数据的情况clone()复制数组适用于基本类型数组System.arraycopy()复制部分数据适用于高效拷贝Arrays.copyOf()复制并调整大小适用于扩容或缩小

选择合适的方法,提高代码的可读性和效率!🚀