Skip to content

数组初始化

数组是相同类型元素的固定长度序列。初始化方式分静态初始化(指定元素)和动态初始化(指定长度)两种。

声明与创建

java
// 先声明后创建
int[] array1;
array1 = new int[5];

// 声明时创建
int[] array2 = new int[5];

// 直接初始化(简化形式)
int[] array3 = {1, 2, 3, 4, 5};

// 使用 new 并初始化
int[] array4 = new int[]{1, 2, 3, 4, 5};

静态初始化

数组长度由元素个数决定,创建时直接指定元素值。

java
// 完整形式
int[] arr1 = new int[]{1, 2, 3, 4, 5};

// 简化形式
int[] arr2 = {1, 2, 3, 4, 5};

// String 数组
String[] names = {"张三", "李四", "王五"};

// double 数组
double[] prices = {99.9, 129.9, 159.9};

动态初始化

创建时指定数组长度,元素自动获得默认值。

java
int[] arr1 = new int[5];        // 默认值 0
double[] arr2 = new double[3];  // 默认值 0.0
boolean[] arr3 = new boolean[2]; // 默认值 false
String[] arr4 = new String[3];   // 默认值 null

默认值对照表:

类型默认值
byte/short/int/long0
float/double0.0
booleanfalse
char'\u0000'
引用类型null

二维数组初始化

java
// 静态初始化
int[][] matrix1 = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 锯齿数组(每行长度不同)
int[][] jagged = {
    {1, 2},
    {3, 4, 5, 6},
    {7, 8, 9}
};

// 动态初始化
int[][] matrix2 = new int[3][4];

// 只指定行数,每行列数可不同
int[][] jagged2 = new int[3][];
jagged2[0] = new int[2];
jagged2[1] = new int[4];
jagged2[2] = new int[3];

长度与索引

java
int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr.length);  // 5

// 二维数组
int[][] matrix = new int[3][4];
System.out.println(matrix.length);       // 3(行数)
System.out.println(matrix[0].length);    // 4(第一行列数)

有效索引范围是 0 到 length-1,超出会抛 ArrayIndexOutOfBoundsException

Arrays 工具类

java
import java.util.Arrays;

// 填充数组
int[] arr1 = new int[5];
Arrays.fill(arr1, 10);  // [10, 10, 10, 10, 10]

// 排序
int[] arr2 = {3, 1, 5, 2, 4};
Arrays.sort(arr2);  // [1, 2, 3, 4, 5]

// 二分查找(数组必须先排序)
int index = Arrays.binarySearch(arr2, 3);  // 2

// 复制
int[] arr3 = Arrays.copyOf(arr2, 10);  // 新数组长度 10
int[] arr4 = Arrays.copyOfRange(arr2, 1, 3);  // [2, 3]

// 比较
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b));  // true

// 转字符串
System.out.println(Arrays.toString(arr2));  // [1, 2, 3, 4, 5]

注意事项

  • 长度不可变:数组创建后长度固定,扩容需要创建新数组
  • 索引从 0 开始:最大索引为 length-1

基于 VitePress 构建