Java语言数组

本文详细介绍了Java中一维和二维数组的概念、声明、创建、初始化、访问、复制、排序、查找、判断相等以及填充等操作。通过实例解析了数组的默认值、大小、下标以及如何利用Arrays类进行操作。同时,文章还探讨了二维数组的特殊性质,包括锯齿数组的定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中有许多基本类型,而数组是一种更复杂的复合类型。本文简单讲解Java中数组的声明、创建、排序、查找、判断相等和填充等内容。

数组是存储相同类型变量的集合。

一维数组

  1. 声明

使用数组前必须对声明一个数组变量,并指明数组的元素类型,例如

double[] a;
int[] b;

第一行声明了一个double类型的数组变量a,表示对这个数组的引用;第二行声明了一个int类型的数组变量b

声明数组也可使用C\C++的风格形式,如

double a[];
int b[];

但是,更推荐第一种写法。

  1. 创建

声明数组变量仅仅是创建了一个对数组的引用的存储位置,并没有在内存中分配存储空间,这一点与基本数据类型不同。

如果声明的变量不对数据进行引用,则变量值为null。可用new操作符创建数组,并将数组的引用赋值给一个变量,例如

a = new double[10];

使用new操作符创建了一个大小为10的double类型数组,并将其赋值给了变量a

数组变量的声明、数组创建和赋值可写为一条语句,例如

double[] a = new double[10];
  1. 数组的大小

在数组创建时指定了大小,内存为其分配了存储空间。数组大小在创建之后就不能修改。可用length获取数组的大小,如

int len = a.length;

a.length获取了数组a的大小。

  1. 数组的默认值

在数组创建之后,数组中的元素就赋予了默认值,如果是数值型数组,则元素默认值为0;如果是char型,默认值为\u0000;如果是boolean型,默认值为false

  1. 访问数组元素

数组元素通过下标的形式访问。数组的下标是从0开始,下标最大为a.length-1。也就是说,a[0]是数组a的第一个元素,而a[9]是最后一个元素。获取数组元素之后,就可把它当作基本变量进行操作。

  1. 初始化

在创建数组后,可访问数组中各个元素,对其赋初值的方式进行初始化,如

double[] a = new double[3];
a[0] = 2.3;
a[1] = 5.5;
a[2] = 4.5;

还可将声明、创建和初始化放在一条语句中,如

double[] a = {2.3, 5.5, 4.5};

上述语句不能拆成声明和赋值两条语句,否则错误。

  1. foreach循环

foreach循环可看作for循环的缩减形式,并且可以不使用下标而顺序地访问数组元素,如

for (double e: a)
	System.out.println(e);

上述语句是打印数组a中每个元素e的值。

  1. 复制数组

如果需要将数组a复制给数组b,需要将数组a中每个元素都复制数组b中,而不能使用数组变量赋值的形式,如

b = a;

这个写法不能完成数组的复制。这是因为ab表示的是两个数组的地址,当使用复制语句之后,ab将指向同一个地址空间。

此外,还可使用System中的静态方法arraycopy完成数组复制

System.arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

其中,参数PostarPos分别表示源数组sourceArray和目标数组targetArray中的开始位置,参数length指定需要复制的元素个数。

使用该方法前,需要创建目标数组分配存储空间。

  1. 数组排序

java.util.Arrays类中包含了sortparallelSort方法,可对数组的全部进行排序,如

java.util.Arrays.sort(a);
java.util.Arrays.parallelSort(a);

也可对数组部分进行排序,如

java.util.Arrays.sort(a, 1, 7);
java.util.Arrays.parallelSort(a, 1, 7);

表示对a[1]a[7 - 1]的范围进行排序。

当电脑有多个处理器时,parallelSort()方法更加高效。

  1. 二分查找

java.util.Arrays类中还有二分查找binarySearch()方法,使用该方法的前提是数组必须已经按升序的顺序排列好,如

java.util.Arrays.binarySearch(a, 2.3);

表示在数组a中查找值为2.3的元素,如果该元素存在,则返回该元素在数组中的下标;如果不存在,则返回-1。

  1. 判断相等

java.util.Arrays类中提供了equals()方法判断两个数组是否相等,如

java.util.Arrays.equals(a, b);

上述代码判断数组ab是否相等,相等返回true;否则返回false。

  1. 填充

java.util.Arrays类中提供fill()方法对数组的全部或部分进行填充,如

java.util.Arrays.fill(a, 5);

表示把5赋值给数组a中的每一个元素,而

java.util.Arrays.fill(a, 1, 7, 5);

表示把5赋值给a[1]a[7 - 1]中的每一个元素。

  1. 返回字符串

java.util.Arrays类中提供了toString()方法返回字符串,代表数组中的所有元素,如

java.util.Arrays.toString(a);

二维数组

二维数组可以看成一维数组的数组,二维数组的每个元素都是一维数组。

  1. 声明和创建

二维数组使用两个下标,分别表示行和列,与一维数组一样,都是从0开始。二维数组声明如下

int[][] matrix;

也可用下面这种方式,但是不推荐

int matrix[][];

同样使用new操作符进行创建,如

matrix = new int[3][3];

二维数组通过行和列下标进行访问,利用下标方式进行初始化,如

matrix[0][0] = 2;
matrix[2][1] = 1;

也可使用下面这种方式对数组进行声明、创建和初始化

int[][] matrix = {{1, 2, 3}, {2, 3, 4}, {5, 6, 7}};
  1. 长度

二维数组实际上是数组的数组,二维数组的元素就是一维数组。因此,matrix.length就是二维数组的元素个数,也即行数。而matrix[0].lengthmatrix[1].length等分别表示第0个和第1个一维数组元素的个数。

  1. 锯齿数组

二维数组是一维数组的数组,因此,每个一维数组的长度可能不同,如

int[][] matrix = {{1, 2, 3}, {1, 2}, {1}};

matrix中第1个元素的长度matrix[0].length为3;而第2个元素和第3个元素分别为2和1。这样各行长度不同的数组称为锯齿数组

当第2维长度不确定时,在数组声明时可以空缺第2维长度值,如

int[][] matrix = new matrix[3][];

new后面必须指定第一个下标值,不允许两个下标值都空缺。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值