数组概述 数组的定义
数组是相同类型数据的有序集合
数组描述的是相同类型的若干个数据,按照一定的先后循序排列组合而成。
其中,每一个数据称作一个数组元素,每个数组元素可以通古通过一个下标来访问他们
数组声明创建声明数组变量的语法:
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
Arrays类用来操作数组(比如排序和搜索)的各种方法
常用的一些方法:
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] }