跳到主要内容

Java 数组

数组在编程语言中是非常重要的数据结构。本小节我们来一起学习 Java 数组,通过本小节的学习,你将了解到数组的基本概念,如何声明数组以及数组的声明有哪些方式,如何初始化数组以及数组初始化有哪些方式,数组的常用操作有哪些,多维数组的声明、创建、初始化以及迭代等等。多维数组部分将以二维数组进行为例讲解,理解了二维数组,再去理解多维数组就相对容易了。

1. 什么是数组

数组是相同类型的数据按照顺序组成的一种引用数据类型

Java 中有基本数据类型和引用数据类型两种数据类型。数组就是引用数据类型。

2. 数组声明

在Java语言中,数组声明有两种语法:

  • 中括号跟在数据类型后DataType[] arrayName;
  • 中括号跟在数组名称后DataType arrayName[];

其中DataType是数组中要存放元素的数据类型,例如intString等,arrayName是数组名称,遵守变量的命名规范。

在实际的编码中,我们更常用的是第一种语法。实例如下:

// 声明一个int类型的数组,名称为 firstIntArray:
int[] firstIntArray; // 推荐写法
int firstIntArray[];

也可以修改数据类型,以生成其他类型的数组。实例如下:

// 声明一个float类型的数组:
float[] firstFloatArray;
// 声明一个字符串类型的数组:
String[] firstStringArray;

3. 数组创建

3.1 先声明再创建

先声明再创建,需要编写两条语句:

DataType[] arrayName;
arrayName = new DataType[数组长度];

数组的创建使用new关键字,后面跟上一个空格+数据类型+中括号[],中括号中间是数组的长度,这里是必须指定的,它是一个整型的数字。实例如下:

// 声明一个整型的数组:
int[] intArray;
// 创建数组,长度为10
intArray = new int[10];

3.2 声明时同时创建

声明时同时创建,需要编写一条语句:

DataType[] arrayName = new DataType[数组长度];

实例如下:

// 声明时同时创建
int[] intArray = new int[10];

数组声明用到的中括号,也可以放到数组名称的后面,实例如下:

int intArray[] = new int[10];

所创建的数组数据类型必须与其声明的数据类型相同。对于其他类型数组的创建,实例如下:

// 创建一个数据类型为字符串、长度为5的数组:
String[] stringArray = new String[5];

// 创建一个数据类型为双精度浮点型、长度为10的数组:
double[] floatArray = new double[10];

// 创建一个数据类型为字符型、长度为10的数组:
char[] charArray;
charArray = new char[10];

4. 数组初始化

数组创建后,所有元素都初始化为默认值,整型数组的元素都为 0,浮点型都为 0. 0 ,布尔型都为 false。例如 int[] arr = new int[5];语句创建了一个数组,它在结构可参考下图:

除了数组的默认初始化,还有另外两种常见形式:

  1. 静态初始化
  2. 动态初始化

下面我们将分别介绍两种数组的初始化形式。

4.1 静态初始化

静态初始化数组,就是声明的同时,给数组赋值。其语法为:

DataType[] arrayName = {元素1, 元素2, 元素3, 元素n};

赋值符号右边为用中括号所包围的 n 个元素,实例如下:

int[] arr = {1, 2, 3, 4, 5};

上面数组arr存放的元素为从 1 到 5 这几个整型。其的长度为 5 。 数组的长度就是初始化时所给数组元素的个数。

4.2 动态初始化

动态初始化数组,即数组的声明以及创建是与数组的赋值操作分开进行的。实例如下:

// 声明并创建数组,长度为3
int[] arr = new int[3];
// 给下标位置0赋值为1
arr[0] = 1;
// 给下标位置1赋值为2
arr[1] = 2;
// 给下标位置2赋值为3
arr[2] = 3;

数组是有下标的,下标从0开始,因此长度为 3 的数组,最大下标为 2 。下图展示了上述代码的执行流程:

5. 数组的操作

5.1 数组元素的引用

语法:数组名[下标],下标从0开始。有一个整型数组,引用其第一个元素,实例如下: