数组
数组简介
数组就是将多个相同类型数据按一定顺序排列而成的集合。
数组的特点:
- 数组中的元素初始化时都是有默认值的,如整型为0,浮点型为0.0等;
- 数组一经创建,其大小(长度)就不可再变;
- 要访问数组中的某个元素,需要使用索引,索引从0开始;
数组的声明方式:
- 静态初始化:手动指定数组元素,系统会根据元素个数计算出数组长度;
- 动态初始化:手动指定数组长度,由系统给出默认值进行初始化值;
一维数组
静态初始化
静态初始化,就是在定义数组的同时将其赋值。
java
int[] arr = new int[]{1, 2, 3, 4};
// 简写
int[] arr = {1, 2, 3, 4};
动态初始化
动态初始化,就是先声明数组的长度,然后再对其分配初始值。
java
int[] arr = new int[4];
arr[0] = 1;
arr[1] = 2;
数组默认值
数组的默认值,也可以理解为 基本数据类型的默认值,就是当声明动态数组的时候,如果不为数组赋值,数组中元素的默认值是什么。
类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
String | null |
boolean | false |
char | 0 或 \u0000 |
二维数组
静态初始化
java
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};
动态初始化
二维数组有两种动态初始化的方式:
- 明确指定行和列的长度
- 只指定行的长度,列的长度由初始化时自动确认
java
// 3行2列
int[][] arr = new int[3][2];
arr = new int[][]{{1, 2}, {3, 4}, {5, 6}};
// 3行,列的长度不固定
int[][] arr = new int[3][];
arr = new int[][]{{1}, {1, 2}, {1, 2, 3}};
数组遍历
for循环
java
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
增强for循环
java
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int item : arr) {
System.out.print(item);
}
二者区别
- 标准 for 循环是通过计数器来进行遍历,我们可以很清楚的得知每个元素对应的索引位置;
- 增强 for 循环则是直接访问数组中的元素值,而不关心每个元素对应的索引位置;
Arrays扩展方法
Arrays 工具类位于 java.util.Arrays
包下,它提供了许多方法,用于快速实现数组的一些操作。
Arrays.equals()
Arrays.equals()
方法用于比较两个数组内的元素值是否相等,==
运算符用于比较两个数组的地址值是否相等。
java
int[] arr1 = new int[]{1, 2, 3, 4};
int[] arr2 = new int[]{1, 2, 3, 4};
var res = arr1 == arr2; // false
var res1 = Arrays.equals(arr1, arr2); // true
Arrays.toString()
toString()
方法用于将数组转为字符串类型,然后输出。
java
var res3 = Arrays.toString(arr1); // [1, 2, 3, 4]
Arrays.fill()
fill()
方法用于填充数组的元素。
java
// 将数组的所有元素全部填充为 10
Arrays.fill(arr1, 10);
System.out.println(Arrays.toString(arr1)); // [10, 10, 10, 10]
Arrays.sort()
sort()
方法用于将一个数组快速进行排序。
java
var arr3 = new int[]{8, 5, 20, 200, 339, 0};
Arrays.sort(arr3);
System.out.println(Arrays.toString(arr3)); // [0, 5, 8, 20, 200, 339]
Arrays.binarySearch()
binarySearch()
方法用于快速查找指定元素在数组中的索引,若找到指定元素,则返回其索引,若没找到,则返回一个负数。
提示
使用 binarySearch()
方法查找的数组,必须是经过排序之后的!
js
var arr3 = new int[]{8, 5, 20, 200, 339, 0};
Arrays.sort(arr3);
System.out.println(Arrays.binarySearch(arr3, 5)); // 1