上一篇                     
               
			  Java如何声明数组?
- 后端开发
- 2025-06-09
- 4056
 在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
 
  
			 
			 
			 
			 
			 
			 
			 
			