数组的定义
数组是相同类型数据的有序集合
数组描述的是相同类型的若干个数据,按照一定的先后循序排列组合而成。
其中,每一个数据称作一个数组元素,每个数组元素可以通古通过一个下标来访问他们
数组声明创建声明数组变量的语法:
dataType[] arrayRefVar; // 首选方法
dataType arrayRefVar[]; // 效果相同,但不是首选方法
java
使用new操作符来创建数组,语法如下:
dataType[] arrayRefVar = new dataType[arraySize];
数组的元素是通过索引访问的,数组索引从0开始
或者数组长度的: arrays.length
;
三种初始化
静态初始化
int[] a = {1, 2, 3};
Man[] mans = {new Man(1, 1), new Man(2, 2)};
动态初始化
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量的方式被隐式初始化。
数组使用通过下标来访问数组中的元素。
遍历
遍历是依次取出数组中的每一个元素。
普通for循环遍历
语法:
for(int i = 0; i < 数组的长度; i++){
数组中元素的类型 变量 = 数组名[i];
}
增强型for循环遍历
语法:
for(数组中元素的类型 变量名:数组名 ){
数组中的元素类型 临时变量 = 变量;
}
空指针异常
当一个变量为null
(没有赋值)时,我们去调用了该变量的属性和方法。就会提示java.lnag.NullPointerException
下标越界
当访问超过数组长度的下标时,就会出现下标越界。java.lang.ArrayIndexOutOfBoundsException
用来操作数组(比如排序和搜索)的各种方法
常用的一些方法:
1、使用二分法查找 Arrays.binarySearch(int[] array, int value)
;
public static void main(String[] args) {
int[] nums_1 = {10, 20, 30, 40, 50, 60};
// 第一个参数是被查找的数字,第二个参数是需要查找的数
int index = Arrays.binarySearch(nums_1, 60);
System.out.println("下标是:" + index);
}
2、数组内容转成字符串的形式输出 Arrays.toString(int[] array)
;
public static void main(String[] args) {
int[] nums_1 = {10, 20, 30, 40, 50, 60};
System.out.println(Arrays.toString(nums_1));
}
3、数组排序 Arrrays.sort(int[] array)
;
public static void main(String[] args) {
int[] nums_2 = {31, 35, 43, 4, 88, 62};
// 在原数组的基础上进行排序,不返回新的数组对象
Arrays.sort(nums_2);
System.out.println(Arrays.toString(nums_2));
}
4、复制指定的数组
public static void main(String[] args) {
int[] nums_2 = {31, 35, 43, 4, 88, 62};
// 第一参数是需要被复制的数组,第二个参数是返回的新数组的长度
int[] nums_3 = Arrays.copyOf(nums_2, 10);
// 结果:[31, 35, 43, 4, 88, 62, 0, 0, 0, 0]
System.out.println(Arrays.toString(nums_3));
int[] nums_5 = new int[10];
// 第一个参数是原数组,第二个参数是原数组的起始位置
// 第三个参数是新数组,第四个参数是新数组起始位置,第五个参数是要复制原数组的元素个数
System.arraycopy(nums_2, 0, nums_5, 0, nums_2.length);
// 结果:[31, 35, 43, 4, 88, 62, 0, 0, 0, 0]
System.out.println(Arrays.toString(nums_5));
// arraycopy性能优于Array.copyOf. 因为copyOf 基于arraycopy实现
}
5、判断两个数组的值是否相等 Arrays.equals(int a, int b)
;
public static void main(String[] args) {
int[] nums_1 = {10, 20, 30, 40, 50, 60};
int[] nums_2 = {31, 35, 43, 4, 88, 62};
System.out.println(Arrays.equals(nums_1, nums_2));
}
6、使用指定元素填充数组 Arrays.fill()
public static void main(String[] args) {
int[] nums_6 = new int[10];
Arrays.fill(nums_6, 1); // 结果:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}