Java数组与参数传递全解析
立即解锁
发布时间: 2025-08-17 02:35:29 阅读量: 3 订阅数: 16 

### Java 数组与参数传递全解析
#### 1. 数组基础与匿名数组
在 Java 中,数组是一种非常重要的数据结构。我们可以使用不同的方式来声明和初始化数组。
首先,有两种常见的数组声明方式:
- `<element type1>[] <array name> = new <element type2>[<array size>];`,例如 `int[] intArray = new int[5];`,这种方式通过数组创建表达式来构造数组,数组大小在创建表达式中指定,数组元素会被初始化为默认值。
- `<element type>[] <array name> = { <array initialize list> };`,例如 `int[] intArray = {3, 5, 2, 8, 6};`,这种方式既创建了数组,又将数组元素初始化为指定的值。
不过,Java 还提供了一种匿名数组的创建方式,它结合了上述两种方式的优点:`new <element type>[] { <array initialize list> }`,例如 `new int[] {3, 5, 2, 8, 6}`。匿名数组没有指定数组名称和大小,它返回新创建数组的引用值,可以赋值给引用变量,也可以作为方法调用的参数。
下面是一个使用匿名数组的示例代码:
```java
public class AnonArray {
public static void main(String[] args) {
System.out.println("Minimum value: " +
findMinimum(new int[] {3, 5, 2, 8, 6}));
}
public static int findMinimum(int[] dataSeq) {
// Assume the array has at least one element.
int min = dataSeq[0];
for (int index = 1; index < dataSeq.length; ++index)
if (dataSeq[index] < min)
min = dataSeq[index];
return min;
}
}
```
这个程序的输出结果是:
```plaintext
Minimum value: 2
```
需要注意的是,不能直接使用数组初始化块作为表达式进行赋值,例如下面的代码是错误的:
```java
int[] daysInMonth;
daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // Not ok.
```
而应该使用匿名数组表达式:
```java
daysInMonth = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // ok.
```
#### 2. 多维数组
由于数组元素可以是对象引用,而数组本身也是对象,所以数组元素可以引用其他数组,这就形成了多维数组。在 Java 中,多维数组的定义方式有以下两种:
- `<element type>[][]...[] <array name>;`
- `<element type> <array name>[][]...[];`
例如,以下三种声明方式是等价的:
```java
int[][] mXnArray;
int[] mXnArray[];
int mXnArray[][];
```
通常,我们会将多维数组的声明和构造结合起来,例如:
```java
int[][] mXnArray = new int[4][5]; // 4 x 5 matrix of ints
```
这个声明创建了一个包含四个元素的数组 `mXnArray`,每个元素又是一个包含 5 个 `int` 值的数组(即行)。我们可以用 `mXnArray[i]` 表示第 `i` 行(`0 <= i < 4`),用 `mXnArray[i][j]` 表示第 `i` 行的第 `j` 个元素(`0 <= j < 5`)。`mXnArray.length` 表示行数,`mXnArray[i].length` 表示第 `i` 行的元素个数。
多维数组也可以使用数组初始化块进行构造和显式初始化,例如:
```java
double[][] identityMatrix = {
{1.0, 0.0, 0.0, 0.0 }, // 1. row
{0.0, 1.0, 0.0, 0.0 }, // 2. row
{0.0, 0.0, 1.0, 0.0 }, // 3. row
{0.0, 0.0, 0.0, 1.0 } // 4. row
}; // 4 x 4 Floating-point matrix
```
多维数组中的数组长度可以不同,这种数组被称为不规则数组。例如:
```java
Pizza[][] pizzaGalore = {
{ new Pizza(), null, new Pizza() }, // 1. row is an array of 3 elements.
{ null, new Pizza()}, // 2. row is an array of 2 elements.
new Pizza[1], // 3. row is an array of 1 element.
{}, // 4. row is an array of 0 elements.
null // 5. row is not constructed.
};
```
当使用 `new` 运算符构造多维数组时,可以省略深层嵌套数组的长度,这些数组将不会被构造。例如:
```java
HotelRoom[][][][] rooms = new HotelRoom[10][5][][]; // Just streets and hotels.
```
这个声明部分构造了一个四维数组 `rooms`,包含 10 条街道,每条街道有 5 家酒店。后续可以为特定街道上的特定酒店添加楼层和房间:
```java
rooms[0][0] = new HotelRoom[3][]; // 3 floors in 1st. hotel on 1st. street.
rooms[0][0][0] = new HotelRoom[8]; // 8 rooms on 1st. floor in this hotel.
rooms[0][0][0][0] = new HotelRoom(); // Initializes 1st. room on this floor.
```
下面是一个构造不规则二维数组的示例代码:
```java
double[][] matrix = new double[3][]; // No. of rows.
```
0
0
复制全文
相关推荐










