上一篇
Java如何声明数组?
- 后端开发
- 2025-06-09
- 4093
在Java中声明数组有两种语法:
数据类型[] 数组名;
或
数据类型 数组名[];
,如
int[] arr;
或
int arr[];
,初始化需用
new
指定长度(如
arr = new int[5];
)或直接赋值(如
int[] arr = {1,2,3};
),数组长度固定,元素类型必须一致。
数组基础概念
数组是固定长度的连续内存空间,用于存储相同数据类型的元素,通过索引(从0开始)访问。int[]
表示整型数组,String[]
表示字符串数组。
一维数组的4种声明方式
标准声明(推荐)
// 声明一个整型数组(未初始化) int[] numbers; // 声明并初始化(长度5,元素默认0) numbers = new int[5];
特点:
- 类型与方括号紧密相连(
int[]
),提高可读性 - 初始化时需指定长度(如
new int[5]
)
声明时直接赋值
// 声明并赋予初始值(自动推导长度为3) String[] names = {"Alice", "Bob", "Charlie"};
注意:
- 必须在一行内完成声明和赋值
- 不能拆分:
String[] names; names = {"...", ...};
错误!
类C风格(不推荐)
int numbers[]; // 功能同上,但可读性差 numbers = new int[3];
缺点:
- 方括号在变量名后,易与类型混淆
- Java官方规范已弃用此写法
分步声明与初始化
double[] prices; // 声明 prices = new double[4]; // 初始化(长度4,默认值0.0) // 后续赋值 prices[0] = 19.99; prices[1] = 29.99;
多维数组声明
二维数组(矩阵)
// 声明3行2列的整型矩阵 int[][] matrix = new int[3][2]; // 直接赋值(锯齿数组) int[][] jagged = { {1, 2}, {3, 4, 5}, // 第二行长度不同 {6} };
分步初始化
int[][] grid; grid = new int[2][]; // 先声明行数 grid[0] = new int[3]; // 第一行3列 grid[1] = new int[4]; // 第二行4列
关键注意事项
-
长度不可变
数组一旦创建,长度固定,扩容需创建新数组:int[] arr = {1, 2, 3}; arr = Arrays.copyOf(arr, 5); // 扩容至长度5
-
默认值规则
| 数据类型 | 默认值 |
|————–|———–|
|int
,byte
|0
|
|double
|0
|
|boolean
|false
|
| 对象引用 |null
| -
空指针风险
未初始化的数组不能使用:int[] data; System.out.println(data[0]); // 编译错误
常见错误示例
错误代码 | 原因 | 修正方案 |
---|---|---|
int[] arr; arr[0]=1; |
未初始化 | 添加 arr = new int[3]; |
int size=5; int[5] arr; |
声明时指定长度 | 改为 int[] arr = new int[size]; |
arr = {1,2,3}; |
未在声明行赋值 | 与声明合并:int[] arr={1,2,3}; |
- 首选语法:
数据类型[] 变量名 = new 数据类型[长度];
- 直接赋值:
类型[] 变量名 = {值1, 值2, ...};
(不可拆分) - 多维数组:遵循“先行后列”原则(如
int[][]
) - 务必初始化:避免空指针异常
引用说明基于Oracle官方文档《Java™教程:数组》[1]和《Java语言规范》[2],遵循Java SE 17标准,实践代码通过OpenJDK 17编译验证。
掌握这些核心方法可高效处理数据集合,后续可结合ArrayList
等动态容器应对灵活需求。
参考资料
[1] Oracle Java Tutorials: Arrays. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
[2] Java Language Specification: Chapter 10. Arrays. https://docs.oracle.com/javase/specs/jls/se17/html/jls-10.html