Java 数组基础知识
一、数组定义及基础知识1、数组是同类型数据的有序集合一次性存多个相同类型的数据长度固定不可变每个元素有下标索引从0 开始2、语法格式int[] array;double[] array;boolean[] array;String[] array;Object[] array;//数组存任意对象3、****关于Object:所有对象都能调用 Object 的方法Object 自带5 个常用核心方法方法作用toString()把对象转成字符串equals判断两个对象内容是否相等hashCode()返回对象哈希值getClass()获取对象的类信息clone()克隆对象二、静态数组动态数组 定义1、静态数组直接初始化元素 长度固定不变// 写法1最常用简写形式 int[] arr1 {1, 3, 5, 7, 9}; // 写法2完整初始化语法 int[] arr2 new int[]{2, 4, 6, 8};2. 动态数组先指定长度运行时再赋值长度初始化后同样不可修改。int[] numbers new int[5]; //直接定义长度为5的int数组 //2、先声明类型长度再用new关键字常见数组对象 int number[]; number new int[5];##补充默认值规则基本类型int0、double0.0、booleanfalse引用类型String、对象等默认值为null三、数组遍历1、for循环可改变元素int[] arr {1,2,3,4,5}; for(int i 0; i arr.length; i){ System.out.print(arr[i] ); }2、增强for循环只读 遍历for(int num : arr){ System.out.print(num ); //num是临时变量仅代表当前遍历元素修改它不改变原数组 }四、数组复制1、手动for循环复制int[] source {1,2,3,4,5}; int[] target new int[source.length]; for(int i0; isource.length; i){ target[i] source[i]; }2、System.arraycopy()原生高效复制int[] source {1,2,3,4,5}; int[] target new int[source.length]; // 参数源数组、源起始下标、目标数组、目标起始下标、复制长度 System.arraycopy(source, 0, target, 0, source.length);3、Arrary.copyOf()(简洁工具类复制import java.util.Arrays; //导入工具类 int[] source {1,2,3,4,5}; //直接创建目标数组 int[] target Arrarys.copyOf(source, source.length);五、数组排序1、内置快速排序Arrays.sort () import java.util.Arrays; int[] arr {5,2,8,1,4}; Arrays.sort(arr); // 输出[1, 2, 4, 5, 8] System.out.println(Arrays.toString(arr)); //数组转为带格式的字符串 打印 2、手动冒泡排序import java.util.Arrays; public class shuzusort { public static void main(String[] args){ int[] arr{5, 3, 7, 8, 9}; for(int i0;iarr.length-1;i){ for(int j0;jarr.length-i-1;j){ if(arr[j]arr[j1]){ int temp arr[j]; arr[j] arr[j1]; arr[j1] temp; } } } System.out.println(Arrays.toString(arr));//结果[3, 5, 7, 8, 9] } }3. 降序排序实现基本类型int[]先升序再反转引用类型Integer[]可直接用 lambda 表达式Integer[] arr {5,2,8,1,4}; Arrays.sort(arr, (a,b) - b - a); //参数1参数2-指向(执行逻辑 //以执行逻辑的正负判断是否交换正则交换其他不变六、数组反转int[] arr {1,2,3,4,5}; int left 0; int right arr.length - 1; while(left right){ // 首尾交换 int temp arr[left]; arr[left] arr[right]; arr[right] temp; left; right--; } // 输出[5, 4, 3, 2, 1]七、数组合并int[] arr1 {1,2,3}; int[] arr2 {4,5,6}; // 新数组长度 两个数组长度之和 int[] newArr new int[arr1.length arr2.length]; // 复制第一个数组 System.arraycopy(arr1, 0, newArr, 0, arr1.length); // 复制第二个数组 System.arraycopy(arr2, 0, newArr, arr1.length, arr2.length); // 输出[1, 2, 3, 4, 5, 6]