14. Java数组
Java语言中数组是用来存储固定大小的同类型元素。
声明数组
数组变量必须先声明,才能在程序中使用,一般有以下两种方式:
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
创建数组
Java语言使用new操作符来创建数组
arrayRefVar = new dataType[arraySize];
new操作符做了两件事:
- 使用dataType[arraySize]创建了一个数组
- 将数组的引用赋值给变量arrayRefVar
简写形式如下:
dataType[] arrayRefVar = new dataType[arraySize];
或
dataType[] arrayRefVar = {value0, value1, ..., valuek};
处理数组
使用基本循环或者For-Each循环
//基本循环
for(;;){
}
//for-each循环,可以在不使用下标的情况下遍历数组
for(type element: array){
//
}
数组作为参数和返回值
//数组作为函数的参数
public static void printArray(int[] array)
//数组作为函数的返回值
public static int[] reverse(int[] list)
多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
String[][] str = new String[3][4];
多维数组的动态初始化
-
直接为每一维分配空间
type[][] typeName = new type[typeLength1][typeLength2]; -
从最高维开始,分别为每一维分配空间
String[][] s = new String[2][]; s[0] = new String[2]; s[1] = new String[3];
多维数组的引用
//对二维数组中的每个元素,引用方式为 arrayName[index1][index2]
num[1][0];
Arrays类
java.util.Arrays类能够方便地操作数组,它提供的所有方法都是静态的
- 给数组赋值,使用fill方法
- 对数组排序,使用sort方法
- 比较数组,通过equals方法比较数组中的元素值是否相等
- 查找数组元素,通过binarySearch方法能够对排序好的数组进行二分查找
| 序号 | 方法和说明 |
|---|---|
| 1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
| 2 | public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
| 3 | public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
| 4 | public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |