Java 中的数组类型

2025年8月12日 | 阅读 7 分钟

数组是 Java 中的一种线性数据结构。它允许我们存储相同数据类型的多个值。它们在 Java 中用作对象。对于 int 或 char 等原始数据类型,原始值存储在内存位置。但如果数组包含对象,那么它不存储对象本身。相反,它保存指向这些对象存储位置的地址,而对象可以位于内存中的任何位置。

阅读更多 数组数据结构

数组类型

数组可以根据其大小维度进行分类。

Types of Arrays in Java

按大小分类

1. 固定大小数组

固定大小数组是大小无法更改的数组。这些数组的缺点是,如果不知道数组大小而声明了一个较大尺寸的数组,并使用了较少数量的数组元素,则会导致内存浪费;或者,如果声明的数组尺寸较小,则可能空间不足以容纳所有元素。在这种情况下,不建议使用静态内存分配。

实施

2. 动态大小数组

在这些数组中,内存的分配和去分配大多是动态进行的。数组大小根据代码执行期间用户的需求而变化,因此程序员不必担心数组大小。元素的添加和删除可以根据需要进行。

实施

按维度分类

1. 一维数组 (1D 数组)

一维数组可以想象成一个单行,元素按顺序存储,一个接一个。它只有一个维度,因此也称为单维数组。

声明:我们通过首先指定数组将保存的元素的数据类型,紧接着是空的方括号 [],然后是数组的名称来声明一维数组。

实例化 (内存分配):一旦声明了数组,下一步就是为其分配内存。这个过程称为实例化。我们通过使用 new 关键字,后跟数组的数据类型,然后是包含数组将能够存储的固定数量的元素(其大小)的方括号 [] 来完成此操作。

当数组被实例化时,它的元素会自动初始化为其默认值:数值类型为 0,布尔类型为 false,引用类型(对象)为 null。

初始化:我们可以使用其索引(从 0 开始)为单个元素赋值。

单条语句声明和初始化

访问元素:我们使用方括号内的索引来访问元素。

length 属性:Java 中的每个数组都有一个 length 属性(不是方法),该属性提供其大小。

一维 (1D) 数组 Java 程序

示例

编译并运行

输出

Elements of the array are: 40 50 60 70 80 90  

解释

在上面的程序中,我们声明并初始化了一个名为 arr[] 的数组,并使用 length 属性查找数组的长度。for 循环逐个遍历数组并打印数组元素。

2. 多维数组

包含多个维度的数组称为多维数组。表格形式的数据可以存储在多维数组中。二维 (2D) 数组和三维 (3D) 数组是多维数组的示例。

二维数组

它通常被视为一个网格或表,包含行和列。在 Java 中,二维数组是数组的数组,其中主数组中的每个元素都是对另一个数组的引用。

声明:要声明二维数组,我们指定数组最终将包含的元素的数据类型,后跟一对方括号 [][],然后写下数组的名称

我们可以通过单条语句声明和初始化二维数组,如下所示。

分配值

示例

二维数组表示

Types of Arrays in Java

请注意,Java 使用零基索引。这意味着 Java 中的数组索引从 0 开始。

另外请注意,在多维数组中,每行的大小可能不同。这意味着每行可能不包含相同数量的元素。

二维 (2D) 数组 Java 程序

示例

编译并运行

输出

1 2 3
4 5 6
7 8 9 

解释

在上面的程序中,我们声明并初始化了一个 3x3 的矩阵。第一个 for 循环遍历行,第二个 for 循环遍历列。第一个打印语句在元素之间打印空格,第二个打印语句将光标移到下一行。

三维数组

它是二维数组的复杂形式。换句话说,它是二维数组的数组。

声明

我们可以通过单条语句声明和初始化三维数组,如下所示。

分配值

示例

三维数组表示

Types of Arrays in Java

三维 (3D) 数组 Java 程序

示例

编译并运行

输出

Elements of the 3D Array:
1 2 3 
4 5 6 

7 8 9 
10 11 12 

多维数组的大小

我们可以通过将所有维度的尺寸相乘来计算数组的大小。这给出了可以存储在数组中的元素数量。例如,int[][][] num = new int[5][5][5]; 可以存储总共 125 个元素。

为什么要使用多维数组?

多维数组在许多现实场景中都很有用,例如

  1. 数学计算:表示用于代数计算的矩阵。
  2. 游戏开发:存储棋盘布局、游戏网格或关卡。
  3. 图像处理:表示数字图像中的像素。
  4. 数据分析:管理电子表格或数据库等结构化数据。

结论

Java 的数组是一种核心且高效的数据结构。它们非常适合存储所有元素类型相同的集合。从使用一维数组管理简单的线性列表,到使用多维数组构建复杂的。

使用多维数组存储表格状信息,甚至使用交错数组处理复杂的、不均匀的数据布局。Java 的数组系统始终提供快速的、基于索引的元素检索。

Java 数组类型 MCQs

1. 在 Java 中,数组索引是__________,这意味着第一个元素位于索引 0。

  1. 基于一
  2. 随机
  3. 基于零
  4. 负数
 

答案:c)

解释:Java(与 C/C++ 一样)使用 0 作为数组的起始索引。


2. 当声明一个数组时,它的__________ 在创建后不能更改。

  1. 元素
  2. 数据类型
  3. 大小
  4. 引用
 

答案:c)

解释:Java 中的数组大小是固定的;一旦分配了内存,就不能直接调整它的大小。


3. 对于原始数据类型,如果没有在实例化期间提供显式值,数组元素默认会自动初始化为__________。

  1. null
  2. 1
  3. 0
  4. true
 

答案:c)

解释:数值原始类型(如 int、double、float)初始化为 0。(布尔类型为 false,引用类型为 null)。


4. Java 中的数组变量实际上是内存中数组对象的__________,而不是元素本身。

  1. 副本
  2. 原始
  3. 引用
 

答案: d)

解释:在 Java 中,数组是对象,而保存对象的变量实际上存储的是指向堆上那些对象的引用(内存地址)。


5. 当一个数组包含对象时,它存储了指向这些对象在内存中位置的__________。

  1. 实际对象
  2. 对象副本
  3. 地址
 

答案:c)

解释:对于引用类型的数组,数组元素本身包含指向实际对象的内存地址(引用),这些对象通常存储在堆上的其他位置。


下一个主题Java 8 中的 Group By