数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号操作符[ ]来定义和使用的。要定义一个数组,只需要在类型名后加上一对空括号即可:
int [ ] array;
也可以将方括号放于标识符后面:
int array [ ]; // 这也是C/C++中数组的定义方式
1.数组的初始化:
1)int [ ] array = {1,2,3,4,5}; // 这种方式只能用于数组创建之时
2)int [ ] a1 = array; // 定义一个数组的引用,并用另一个数组的引用给这个引用赋值
3)int [ ] = new int[10]; // 创建指定大小的数,如果没有对数组的元素初始化,则编译器将数组元素默认初始化为0(null);
2.所有的数组中都有一个固有成员,可以通过它获知数组内包含了多少个元素,但不能对其修改(只读),这个成员就是length,而且它只表示数组的大小而不是实际保存的元素个数。
3.数组的下标是从0开始的,直到length - 1,如果下标超出这个有效范围,程序运行时将出现数组下标越界之异常。
程序实例:
public class Test {
public static void main(String[] args) {
int[] array1 = { 1, 2, 3, 4, 5 };
int array2[] = array1;
int[] array3 = new int[5];
for (int i = 0; i < array2.length; i++) {
array2[i] = array2[i] * 10;
}
for (int i = 0; i < array2.length; i++) {
System.out.println(array1[i]);
}
}
}
程序输出:10,20,30,40,50
5.多维数组
1)int [ ] [ ] a = { { 1,2,3,},{4,5,6, }, { }, }; // 特别之处是可以在最后一个元素后面加,以便于代码的修改
2)int [ ] [ ] b = new int [5][ ] ;
6.Java类库中的Arrays(下面介绍的这几个方法都是static方法且参数只适用于一维数组)
1)Arrays.fill() —— 只能用同一个值填充各个位置,而只对对象而言,就是复制同一个引用进行填充;
2)Arrays.equals() —— 用于比较两个数组是否相等(deepEquals()用于多维数组);
3)Arrays.sort() —— 用于对数组排序;
4)Arrays.binarySearch() —— 用于在已排序数组中利用二分查找法查找元素;
5)Arrays.toString() —— 产生数组的String表示;
6)Arrays.hashCode() —— 产生数组的散列码;
此外,Arrays.asList() —— 接受任意的序列或数组作为其参数,并将其转变为List容器
复制数组的方法 System.arrayCopy(); // 其需要的参数分别为:原数组,从原数组的那个位置开始复制,目标数组,复制到目标数组中的起始位置,要复制的元素个数
程序实例:
public class TestArray {
public static void main(String[] args) {
int[] array1 = new int[10];
int array2[] = new int[10];
// 数组的填充
Arrays.fill(array1, 0);
Arrays.fill(array2, 1);
// 比较两个数组是否相等(长度相等,数组中的各个元素也相等才是真相等)
System.out.println("array1==array2 : " + Arrays.equals(array1, array2));
for (int i = 0; i < array1.length; i++) {
array1[i] = new Random().nextInt() % 1000;
}
// 数组复制
System.arraycopy(array1, 0, array2, 0, array1.length);
System.out.println("array1==array2 : " + Arrays.equals(array1, array2));
// 将数组转化为字符串打印输出
System.out.println("array1=" + Arrays.toString(array1));
// 对数组进行排序——基本类型使用快排,非基本类型使用归并排序,其中字符串按照字典序进行排序
Arrays.sort(array1);
System.out.println("array1=" + Arrays.toString(array1));
int findValue = 10;
// 利用二分法在数组中查找指定元素——如果找到则返回其插入的恰当位置(插入点),反之返回一个负值(-插入点-1)
int position = Arrays.binarySearch(array1, findValue);
System.out.println("position=" + position);
}
}
程序的输出:
array1 == array2 : false
array1 == array2 : true
array1 = [-980, 342, -564, -933, 360, 618, -124, -759, -78, 103]
array1 = [-980, -933, -759, -564, -124, -78, 103, 342, 360, 618]
position = -7
完