
Java数组全套精炼知识点完全匹配PDF讲义易懂精简一、一维数组基础概念批量存相同类型数据统一批量操作。使用三步声明 数据类型[] 数组名; 推荐写法分配空间 数组名 new 数据类型[长度];存取使用存 数组名[下标] 值;取 数组名[下标]下标规则下标范围 0 ~ 数组名.length - 1下标越界下标超出范围运行抛 ArrayIndexOutOfBoundsException遍历数组javafor(int i0; i数组名.length; i){//操作数组名[i]}5. 默认初始值int/整数0小数(double/float)0.0booleanfalsechar空字符 \u0000引用类型(对象)null三种定义写法声明分配空间 int[] a new int[5];new大括号初始化 int[] a new int[]{1,2,3}; 方括号不能写长度简写初始化 int[] a {1,2,3};⚠️ 简写必须声明和赋值写一行拆分报错javaint[] a;a {1,2}; // 语法错误二、数组内存难点1.数组元素内存连续存放2.数组变量存堆内存首地址不是数组本身3.寻址公式首地址 下标 × 单个元素字节数4.下标从0简化计算提升寻址效率5.赋值区别基本类型赋值传递真实数值互不影响数组赋值传递内存地址两个变量共用同一个数组三、数组扩容扩容思路创建长度更大新数组通常2倍把旧数组全部元素复制进新数组原数组变量指向新数组地址三种实现方式手动for循环拷贝javaint[] a {1,7,4,3};int[] b new int[a.length*2];for(int i0;ia.length;i) b[i]a[i];a b;2. System.arraycopy(原数组,原起始下标,新数组,新起始下标,拷贝个数)3. Arrays.copyOf(原数组,新长度) 最简javaint[] b Arrays.copyOf(a,a.length*2);a b;四、可变长参数作用方法接收数量不固定的同类型实参语法 返回值 方法名(类型…变量名)底层自动封装为对应一维数组方法内直接当数组使用javapublic static void fun(int… a){for(int i0;ia.length;i) System.out.println(a[i]);}硬性规则一个方法只能1个可变参数必须放在形参最后一位五、数组排序面试重点冒泡排序相邻两两比较大值逐步后移外层循环控制轮次 length-1 内层每轮减少一次比较javafor(int i1;ia.length;i){for(int j0;ja.length-i;j){if(a[j]a[j1]){int tempa[j];a[j]a[j1];a[j1]temp;}}}2. 选择排序固定当前下标和后面全部元素对比最小值逐步前移javafor(int i0;ia.length-1;i){for(int ji1;ja.length;j){if(a[i]a[j]){int tempa[i];a[i]a[j];a[j]temp;}}}3. 工具快速排序java.util.Arrays.sort(数组名); 底层快排开发首选六、二维数组本质一维数组里面每一个元素又是一个一维数组基础语法声明 int[][] a;分配空间 a new int[行数][列数];取值 a[行下标][列下标] 行列下标都从0开始获取长度行数 a.length指定行的列数 a[行标].length三种初始化写法int[][] a new int[3][4];int[][] a new int[][]{{1,2},{3,4}};int[][] a {{1,2},{3,4}}; 声明赋值必须同行不规则二维数组每行长度不一样定义只能指定行数不能先指定列javaint[][] a new int[3][];a[0] new int[2];a[1] new int[5];简写 int[][] a {{1},{1,2,3},{5,6}};