Java 语言中提供的数组是用来存储固定大小的同类型元素。
1、声明数组变量
声明数组的方式有两种,只有声明完数组后,才能开始使用。
// 方式一:
int[] arr;
// 方式二:
int arr[];
2、一维数组
2.1、创建数组
使用 new 关键字来创建数组,在创建数组时,需要声明数组的 size 容量。
// 例:
int arr[] = new int[10];
Object[] objects = new Object[10];
boolean bool[] = new boolean[10];
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arr.length - 1。
除了上一种创建方式外,另一种方式是在创建时为其赋值。
// 例:
int arr[] = {1,2,3};
我们通常使用 arr.length 来获取数组的长度。
// 例:
int arr[] = {1,2,3,4};
int len = arr.length; // len的值为4
2.2、处理数组
数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。在后续的章节会对循环进行详细的讲解。
使用 arr[i] 的方式获取数组中下标为 i 中的元素。
// 例:
int arr[] = {1,2,3,4,5};
for(int i = 0; i < arr.length; i++){
// 在控制台打印 arr 数组中的数据
System.out.println(arr[i]);
}
3、二维数组
二维数组可以简单的理解为矩阵。
3.1、创建数组
二维数组的创建方式与一维数组基本相同。
// 例:
// 方式一:我们可以只指定行数,而不用指定列数
int[][] arr = new int[10][];
// 方式二:可以同时指定行数和列数
int[][] arrs = new int[10][10];
//但是不能只指定列数,不指定行数,下面的例子编译是不通过的。
int[][] err = new int[][10];
那么该如何获取数组的长度呢?我们需要先获取指定的行再获取指定列上的元素。
// 例:
int arr[][] = new int[10][11];
int x = arr.length; // x 的值为 10
int y = arr[0].length; // y 的值为 11
// 当使用如下方式创建数组时,不能获取列的长度,否则会报错
int[][] arr = new int[10][];
int x = arr.length; // x 的值为 10
int y = arr[0].length; // 报错:java.lang.NullPointerException
3.2、处理数组
对于二维数组的遍历,也是采用基本循环或 For-Each 循环的方式。
// 例:
int arr[][] = {{1, 2, 3}, {4, 5, 6}};
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
// 在控制台打印 arr 数组中的数据
System.out.println(arr[i][j]);
}
}
4、Arrays工具类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
下面列举一些常用的方法:
- 给数组赋值:通过
fill()方法。 - 对数组排序:通过
sort()方法,按升序。 - 比较数组:通过
equals()方法比较数组中元素值是否相等。注意[1,2,3]和[2,1,3]返回false - 数组转换:通过
asList()将数组转换为List(你可以在以后的章节里来学习List)。
4.1、实例
// 声明三个数组
int arr1[] = new int[3]; // [0,0,0]
int arr2[] = {0,0,0}; // [0,0,0]
int arr3[] = new int[3];
int arr4[3] = {0}; // 报错,和 C语言 不一样
// 为数组赋值
Arrays.fill(arr1,1); // [1,1,1]
Arrays.fill(arr2,1); // [1,1,1]
Arrays.fill(arr3,2);
// 判断 arr1 和 arr2 是否相等、arr1 和 arr3 是否相等
System.out.println("数组arr1和数组arr2是否全等:" + Arrays.equals(arr1,arr2));
System.out.println("数组arr1和数组arr3是否全等:" + Arrays.equals(arr1,arr3));
// 输出 arr3 的内容
System.out.print("数组arr3:");
for (int i = 0; i < 3; i++) {
System.out.print(arr3[i] + " ");
}
Output is:
数组arr1和数组arr2是否全等:true
数组arr1和数组arr3是否全等:false
数组arr3:2 2 2
转自: