Java基础07—多维数组
多维数组
在 Java 中,可以使用多维数组来存储多个数据值,以便更好地组织和访问这些数据。Java 中的多维数组是一种数组的数组,即一个数组的元素也是一个数组。Java 中的多维数组可以包含任意数量的维度。在处理多维数组时,需要注意数组下标的范围,以避免数组越界异常。同时,还可以使用循环嵌套来遍历多维数组中的所有元素。
二维数组
为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。
定义二维数组
语法规则:
数据类型[ ][ ] 数组名;
或者
数据类型 数组名[ ][ ];
语法解析:
[][] 表示二维数组,前面的[ ]表示第一维,后面的[ ]表示第二维。
[][]
放在数组名的前面或后面都是正确的。
分配内存
int[][] arr = new int[3][4];
数组元素初始化
// 二维数组初始化
int[][] arr = new int[3][4]; // 动态初始化
arr[0][0] = 1;
int[][] arr1 = new int[][]{ // 静态初始化
{1, 2, 3},
{2, 3},
{3, 4, 5, 4}
};
二维数组的迭代
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
for (int i1 = 0; i1 < arr1[i].length; i1++) {
System.out.println(arr1[i][i1]);
}
}
for (int[] t : arr1) {
for (int a : t) {
System.out.println(a);
}
}
Arrays类
JDK
中提供了一个专门用于操作数组的工具类,即Arrays类,位于java.util
包中。该类提供了一些列方法来操作数组,如排序、复制、比较、填充等,用户直接调用这些方法即可,不需要自己编码实现,降低了开发难度。
java.util.Arrays
是一个与数组相关的工具类,里面提供了大量静态方法,用来事项数组常见的操作。
Arrays类的常用方法
方法 | 返回类型 | 说明 |
---|---|---|
equals(array1,array2) | boolean | 比较两个数组是否相等 |
sort(array) | void | 对数组 array 的元素进行排序 |
to String(array) | String | 将一个数组 array 转换成一个字符串 |
fill(array,val) | void | 把数组array的所有素都赋值成val |
copy of(array,length) | 与array 数据类型一致 | 把数组 array 复制成一个长度为 length 的新数组 |
binarySearch(array,val) | int | 查询元素值 val 在数组 array 中的下标 |
compare(arrayl,array2) | int | 按字典顺序比较数组,前面的数组大,返回大于0的值,反之返回小于0的值 |
copyOfRange(arr,start,end) | 与 array 数据类型一致 | 将指定数组的指定范围复制到新数组中。 |
fill(arr,start,end, val) | void | 将指定的值分配给指定数组的指定范围的每个元素。 |
mismatch(arrayl,array2) | int | 查找并返回两个数组之间第一个不匹配的索引,否则如果未找到不匹配,则返回 -1。 |
mismatch(array1,start1 end1,array2,start2,end2) | int | 查找并返回指定范围内两个数组之间第一个不匹配的相对索引,否则如果未找到不匹配,则返回-1。 |
Arrays类的应用
比较两个数组是否相等
- Arrays类的equals()方法用于比较两个数组是否相等。只有当两个数组长度相等,对应位置的元素也一一相等时,该方法返回true,否则返回false。
对数组元素进行升序排序
- Arrays类的sort()方法对数组的元素进行升序排序。
将数组转换成字符串
- 将数组所有元素赋值为相同的值
- Arrays类的fill(array,val)方法用于把数组array的所有元素都赋值为val。
输出数组内容的toString()
方法
- 该方法用于将一个数组转换成一个字符串。它按顺序把多个数组元素连在一起,多个数组元素之间使用英文逗号和空格隔开。利用这种方法可以很清楚地观察到各个数组元素的值。
将数组赋值成一个长度为设定值的新数组
-
Arrays类的
copyOf()
方法把数组复制成一个长度为设定值的新数组。 -
Arrays类的
copyOf(array,length)
方法可以进行数组复制,把原数据复制成一个新数组,其中length是新数组的长度。如果length小于原数组的长度,则新数组就是原数组的前面length个元素;如果length大于原数组的长度,则新数组前面的元素就是原数组的所有元素,后面的元素是按照数组类型补充的默认值,如整数补充0,浮点数补充0.0等。
-
System.arraycopy()
方法从指定的源数组复制一个数组,从指定位置开始,到目标数组的指定位置。该方法声明如下:
public static void arrcopy(Object src, int srcPos, Object dest, intdestPos, int length)
参数解析:
src:这是源数组。
srcPos:这是源数组中的起始位置。
dest:这是目标数组。
destPos:这是目标数据中的起始位置。
length: 这是要复制的数组元素的数量。
数组组件的子序列从 src 引用的源数组复制到 dest 引用的目标数组。复制的组件数等于 length 参数。
源数组中位置srcPos到srcPos + length - 1的元素被复制到目标数组的destPos 到 destPos + length - 1的位置。
查询元素在数组中的下标
Arrays类的binarySearch(Object[],Object key)方法用于查询数组元素在数组中的下标。调用该方法时要求数组中的元素已经按升序排列。如果key在数组中,则返回搜索值的索引;如果key不在数组中,返回值-1或“-”(插入点)。插入点的值有如下四种情况。
[1] 搜索值是数组元素,从0开始计数,得搜索值的索引值;
[2] 搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;
[3] 搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1);
[4] 搜索值不是数组元素,且小于数组内元素,索引值为 – 1。