1. 声明数组变量
- 语法:
类型[] 变量名;
- 作用:声明一个引用类型变量,用于指向某个数组对象。
- 示例:
java
Product[] products; // 声明一个 Product 类型的数组变量(此时变量未初始化)
2. 创建数组对象
- 语法:
new 类型[长度];
- 作用:在堆内存中分配一个数组对象,长度固定,元素初始值为默认值(引用类型为
null
,基本类型为0
、false
等)。 - 示例:
java
new Product[3]; // 创建一个长度为3的数组对象,每个元素初始化为 null
3. 组合语句(声明 + 初始化)
将声明和创建合并为一条语句:
java
Product[] products = new Product[3]; // 声明并创建一个长度为3的 Product 数组
内存示意图
java
堆内存中的数组对象: |
|
+-------+-------+-------+ |
|
| 索引0 | 索引1 | 索引2 | // 初始值均为 null |
|
+-------+-------+-------+ |
|
栈内存中的变量 products: |
|
+-------+ |
|
| 地址 | → 指向堆内存中的数组对象 |
|
+-------+ |
常见误区
误区1:数组对象包含实际元素
java
// 错误理解:认为 new Product[3] 创建了3个 Product 对象 |
|
Product[] products = new Product[3]; |
|
// 实际:数组中的元素都是 null,需要单独初始化 |
|
products[0] = new Product(...); // 需手动创建对象并赋值 |
误区2:数组长度可变
java
Product[] products = new Product[3]; |
|
products = new Product[5]; // 可以重新指向新数组,但原数组长度不可变 |
正确使用场景
声明空数组:
java
Product[] emptyProducts = new Product[0]; // 空数组
初始化时赋值:
java
Product[] products = new Product[] { // 直接初始化元素
new Product(1, "商品A", 100.50, 10),
new Product(2, "商品B", 200.75, 20),
new Product(3, "商品C", 150.25, 15)
};
总结
- 语法:
Product[] products = new Product[3];
是标准的数组对象声明和初始化方式。 - 本质:创建了一个长度为3的数组容器,元素需要后续逐个初始化。
- 关键点:区分数组对象本身和数组中存储的对象(数组中存储的是引用)