全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-09 6 分钟 ✍️ 小昭

数组的定义与初始化

数组是存储多个同类型元素的容器。

数组概念

什么是数组

数组是固定长度的同类型元素集合,存储在连续内存中。

Java
// 数组特点
// 1. 固定长度(创建后不可改变)
// 2. 元素类型相同
// 3. 索引从0开始
// 4. 连续内存存储

数组声明语法

Java
// 声明数组变量
int[] arr;        // 推荐写法
int arr[];        // 也可用(不推荐)

String[] names;   // 字符串数组
double[] prices;  // double数组

数组创建与初始化

使用new创建数组

Java
// 创建指定长度数组
int[] arr = new int[5];  // 创建长度为5的int数组

// 默认值:
// int: 0
// double: 0.0
// boolean: false
// String/对象: null

System.out.println(arr[0]);  // 0(默认值)
System.out.println(arr.length);  // 5

直接初始化数组

Java
// 声明并初始化
int[] arr1 = {1, 2, 3, 4, 5};

// 等价于
int[] arr2 = new int[]{1, 2, 3, 4, 5};

// 长度由元素个数决定
System.out.println(arr1.length);  // 5

分步创建

Java
// 1. 先声明
int[] arr;

// 2. 后创建
arr = new int[3];

// 3. 再赋值
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;

各类型数组初始化

基本类型数组

Java
// int数组
int[] nums = {1, 2, 3};

// double数组
double[] prices = {10.5, 20.0, 30.5};

// boolean数组
boolean[] flags = {true, false, true};

// char数组
char[] chars = {'A', 'B', 'C'};

引用类型数组

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

// 自定义类数组
Student[] students = new Student[3];
students[0] = new Student("张三");
students[1] = new Student("李四");
students[2] = new Student("王五");

默认值对照表

类型默认值
int/short/byte/long0
float/double0.0
booleanfalse
char'�'(空字符)
引用类型(String等)null
Java
int[] arr = new int[5];
// 所有元素为0

String[] names = new String[3];
// 所有元素为null

数组访问

通过索引访问

Java
int[] arr = {10, 20, 30, 40, 50};

// 读取元素(索引从0开始)
int first = arr[0];   // 10
int second = arr[1];  // 20
int last = arr[4];    // 50

// 修改元素
arr[0] = 100;
arr[2] = 300;

数组索引规则

  • 索引从0开始
  • 最大索引为length-1
  • 越界访问抛ArrayIndexOutOfBoundsException
Java
int[] arr = new int[3];

// 有效索引:0, 1, 2
// arr[-1];  // 错误:越界
// arr[3];   // 错误:越界

length属性

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

// 获取数组长度
int len = arr.length;  // 5(注意:length是属性,不是方法)

// 最后一个元素
int last = arr[arr.length - 1];

多维数组

二维数组

Java
// 声明二维数组
int[][] matrix;

// 创建并初始化
int[][] matrix1 = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 使用new创建
int[][] matrix2 = new int[3][4];  // 3行4列

// 访问元素
int val = matrix1[0][1];  // 2(第0行第1列)

不规则二维数组

Java
// 每行长度不同
int[][] arr = new int[3][];  // 先指定行数

arr[0] = new int[2];  // 第0行2列
arr[1] = new int[3];  // 第1行3列
arr[2] = new int[4];  // 第2行4列

二维数组遍历

Java
int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6}
};

// 遍历所有元素
for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.println(matrix[i][j]);
    }
}

数组与内存

数组内存结构

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

// 栈内存:存储arr引用(地址)
// 堆内存:存储数组对象和元素

// 数组引用在栈,数组实体在堆

数组引用

Java
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;  // arr2指向arr1同一数组

arr2[0] = 100;
System.out.println(arr1[0]);  // 100(同一数组)

// arr1和arr2是同一数组的两个引用

数组注意事项

数组长度不可变

Java
int[] arr = new int[3];

// 数组长度固定,不能改变
// 想要"扩容"需要创建新数组
int[] newArr = new int[5];
// 复制旧数组元素到新数组

空数组与null

Java
// 空数组:长度为0的数组
int[] empty = new int[0];
empty.length;  // 0

// null:没有指向任何数组
int[] nullArr = null;
// nullArr.length;  // NullPointerException

数组初始化完整示例

Java
// 完整流程示例
public class ArrayDemo {
    public static void main(String[] args) {
        // 方式1:直接初始化
        int[] arr1 = {1, 2, 3};
        
        // 方式2:new初始化
        int[] arr2 = new int[]{1, 2, 3};
        
        // 方式3:分步创建
        int[] arr3;
        arr3 = new int[3];
        arr3[0] = 1;
        arr3[1] = 2;
        arr3[2] = 3;
        
        // 输出
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }
    }
}

要点总结

  • 数组是固定长度的同类型元素集合
  • 声明语法:int[] arr 或 int arr[](推荐前者)
  • 创建数组:new int[长度] 或 {元素列表}
  • 索引从0开始,最大索引为length-1
  • length属性获取数组长度(不是方法)
  • 基本类型数组默认值:数字为0,boolean为false
  • 引用类型数组默认值:null
  • 索引越界抛ArrayIndexOutOfBoundsException
  • 数组引用在栈,实体在堆
  • 数组长度创建后不可改变
  • 二维数组:int[][] matrix = new int[行][列]

articles/JAVA/入门/数组与方法/数组的定义与初始化.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 逻辑运算符
下一篇 → 数组的常见操作(排序、查找)
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库