
数组是 Java 基础数据结构是学习集合、算法的前置内容本文梳理数组核心用法、内存原理、扩容、排序及二维数组附带代码示例。一、数组基础使用1. 概念数组是存储多个相同类型数据的容器。2. 声明与创建// 标准声明int[] arr;// 声明并开辟空间长度为5int[] arr new int[5];3. 元素操作- 赋值 数组名[下标] 值- 取值 数组名[下标]- 下标范围 0 ~ 数组长度-1 超出会触发 ArrayIndexOutOfBoundsException 数组下标越界异常4. 数组默认值- 基本数据类型整数 0 、小数 0.0 、布尔 false 、字符空字符- 引用类型 null5. 三种初始化方式// 1. 动态初始化int[] arr1 new int[4];// 2. 静态初始化完整版int[] arr2 new int[]{1,2,3,4};// 3. 静态初始化简写声明和赋值必须同行int[] arr3 {1,2,3,4};6. 数组遍历// 普通for循环遍历for (int i 0; i arr.length; i) {System.out.println(arr[i]);}二、数组内存原理1. 数组在内存中连续存储数组名保存数组首地址。2. 数组变量相互赋值传递的是地址多个变量指向同一个数组。int[] a {1,2,3};int[] b a;b[0] 10; // a数组同步改变三、数组扩容Java 数组长度固定扩容思路新建大数组 → 复制原元素 → 引用指向新数组。1. 手动扩容int[] oldArr {1,2,3};int[] newArr new int[oldArr.length * 2];for (int i 0; i oldArr.length; i) {newArr[i] oldArr[i];}oldArr newArr;2. 工具类扩容推荐import java.util.Arrays;int[] arr {1,2,3};arr Arrays.copyOf(arr, arr.length * 2);四、可变长参数JDK5 新特性接收不定个数同类型参数本质是数组。public static void test(int... nums){for (int num : nums) {System.out.println(num);}}// 调用test(1);test(1,2,3);规则一个方法只能有一个可变参数且必须放在形参末尾。五、数组排序1. 冒泡排序相邻元素两两比较大数后移。int[] arr {5,2,9,1};for (int i 0; i arr.length - 1; i) {for (int j 0; j arr.length - 1 - i; j) {if (arr[j] arr[j1]) {int temp arr[j];arr[j] arr[j1];arr[j1] temp;}}}2. 选择排序每轮找出最小值交换至前方。int[] arr {5,2,9,1};for (int i 0; i arr.length - 1; i) {int minIndex i;for (int j i1; j arr.length; j) {if (arr[j] arr[minIndex]) {minIndex j;}}int temp arr[i];arr[i] arr[minIndex];arr[minIndex] temp;}3. 工具类排序开发常用import java.util.Arrays;int[] arr {5,2,9,1};Arrays.sort(arr);六、二维数组二维数组是一维数组中的数组。1. 基本使用// 3行4列二维数组int[][] arr new int[3][4];// 赋值arr[0][1] 10;// 获取行数arr.length// 获取单行列数arr[0].length2. 初始化方式// 静态初始化int[][] arr1 {{1,2},{3,4,5},{6}};// 不规则二维数组int[][] arr2 new int[3][];arr2[0] new int[2];arr2[1] new int[3];总结1. 数组长度固定内存连续依靠下标快速访问元素。2. 扩容依赖新建数组元素复制优先使用 Arrays.copyOf 。3. 冒泡、选择排序理解原理业务代码直接使用 Arrays.sort 。4. 二维数组为数组嵌套支持不规则行列结构。