一、数组是什么数组就是一个可以存放多个相同类型数据的容器并且支持批量操作数据在内存里连续存放访问效率很高。使用数组只需要三步声明确定数组类型与名称分配空间确定数组能存多少数据使用元素通过下标存值、取值二、数组的基础用法必掌握1. 声明与创建// 声明 int[] arr; // 分配空间 arr new int[5];合并写法int[] arr new int[5];直接赋值最常用int[] arr {1, 3, 5, 7, 9};2. 下标规则下标从0 开始合法范围0 ~ 长度-1超出范围会报ArrayIndexOutOfBoundsException3. 存取元素存arr[0] 10;取int num arr[0];4. 数组遍历用 for 循环配合下标遍历for (int i 0; i arr.length; i) { System.out.println(arr[i]); }数组名.length可以直接获取数组长度。5. 数组默认值创建数组后未赋值系统会自动赋默认值整数0小数0.0布尔false字符\u0000引用类型null三、数组的内存原理理解重点数组在内存中是连续的存储空间数组变量保存的是数组的首地址访问公式首地址 下标 × 单个元素字节数下标从 0 开始是为了提升寻址效率数组之间赋值是传递地址基本类型赋值是传递数值四、数组扩容面试高频数组长度一旦确定不能修改想要存更多数据只能扩容。扩容思路新建一个更大的数组通常是原长度 2 倍把旧数组内容复制到新数组让原数组指向新数组地址三种实现方式手动循环复制int[] newArr new int[arr.length * 2]; for (int i 0; i arr.length; i) { newArr[i] arr[i]; } arr newArr;System.arraycopySystem.arraycopy(arr, 0, newArr, 0, arr.length);Arrays.copyOf最简洁arr Arrays.copyOf(arr, arr.length * 2);五、可变长参数JDK 5 新增特性允许方法接收个数不固定的同类型参数。语法public static void print(int... nums) { // 内部直接当数组使用 for (int n : nums) { System.out.println(n); } }规则一个方法最多一个可变参数必须放在参数列表最后一位底层自动封装为数组六、数组排序1. 冒泡排序相邻两两比较大的往后移for (int i 1; i arr.length; i) { for (int j 0; j arr.length - i; j) { if (arr[j] arr[j1]) { int temp arr[j]; arr[j] arr[j1]; arr[j1] temp; } } }2. 选择排序固定位置找最小值交换到前面for (int i 0; i arr.length-1; i) { for (int j i1; j arr.length; j) { if (arr[i] arr[j]) { int temp arr[i]; arr[i] arr[j]; arr[j] temp; } } }3. 工具类排序开发用Arrays.sort(arr);七、二维数组二维数组就是数组里面装数组可以看作表格结构。int[][] arr new int[3][4]; int[][] arr {{1,2}, {3,4}, {5,6}};使用访问arr[行][列]行数arr.length列数arr[i].length支持不规则二维数组每行长度可不同
JAVA---数组
一、数组是什么数组就是一个可以存放多个相同类型数据的容器并且支持批量操作数据在内存里连续存放访问效率很高。使用数组只需要三步声明确定数组类型与名称分配空间确定数组能存多少数据使用元素通过下标存值、取值二、数组的基础用法必掌握1. 声明与创建// 声明 int[] arr; // 分配空间 arr new int[5];合并写法int[] arr new int[5];直接赋值最常用int[] arr {1, 3, 5, 7, 9};2. 下标规则下标从0 开始合法范围0 ~ 长度-1超出范围会报ArrayIndexOutOfBoundsException3. 存取元素存arr[0] 10;取int num arr[0];4. 数组遍历用 for 循环配合下标遍历for (int i 0; i arr.length; i) { System.out.println(arr[i]); }数组名.length可以直接获取数组长度。5. 数组默认值创建数组后未赋值系统会自动赋默认值整数0小数0.0布尔false字符\u0000引用类型null三、数组的内存原理理解重点数组在内存中是连续的存储空间数组变量保存的是数组的首地址访问公式首地址 下标 × 单个元素字节数下标从 0 开始是为了提升寻址效率数组之间赋值是传递地址基本类型赋值是传递数值四、数组扩容面试高频数组长度一旦确定不能修改想要存更多数据只能扩容。扩容思路新建一个更大的数组通常是原长度 2 倍把旧数组内容复制到新数组让原数组指向新数组地址三种实现方式手动循环复制int[] newArr new int[arr.length * 2]; for (int i 0; i arr.length; i) { newArr[i] arr[i]; } arr newArr;System.arraycopySystem.arraycopy(arr, 0, newArr, 0, arr.length);Arrays.copyOf最简洁arr Arrays.copyOf(arr, arr.length * 2);五、可变长参数JDK 5 新增特性允许方法接收个数不固定的同类型参数。语法public static void print(int... nums) { // 内部直接当数组使用 for (int n : nums) { System.out.println(n); } }规则一个方法最多一个可变参数必须放在参数列表最后一位底层自动封装为数组六、数组排序1. 冒泡排序相邻两两比较大的往后移for (int i 1; i arr.length; i) { for (int j 0; j arr.length - i; j) { if (arr[j] arr[j1]) { int temp arr[j]; arr[j] arr[j1]; arr[j1] temp; } } }2. 选择排序固定位置找最小值交换到前面for (int i 0; i arr.length-1; i) { for (int j i1; j arr.length; j) { if (arr[i] arr[j]) { int temp arr[i]; arr[i] arr[j]; arr[j] temp; } } }3. 工具类排序开发用Arrays.sort(arr);七、二维数组二维数组就是数组里面装数组可以看作表格结构。int[][] arr new int[3][4]; int[][] arr {{1,2}, {3,4}, {5,6}};使用访问arr[行][列]行数arr.length列数arr[i].length支持不规则二维数组每行长度可不同