Java

    技术2025-08-21  21

    数组

    数组定义

    定义格式:

    数据类型[] 数组名 = new 数据类型[数组长度]; (动态初始化) int[] arr = new int[5];变形:数据类型 数组名[] = new 数据类型[数组长度]; int arr[] = new int[5]; 数据类型[] 数组名 = new 数据类型[]{item1,item2,item3,…};(静态初始化) int[] arr = new int[]{13,4,71,33,16}; 数据类型[] 数组名 = {item1,item2,item3,…};(静态初始化的简化版) int[] arr = {13,4,71,33,16};

    java 内存分配

    栈内存(Stack)堆内存(Heap)方法区本地方法栈寄存区

    数组的常见操作

    遍历

    标准 for 循环

    int[] a = {1,2,3,4,5}; for(int i=0;i <a.length - 1;i++) { System.out.println(a[i]); }

    foreach 方式

    int[] a = {1,2,3,4,5}; for(int i : a) { System.out.println(i); }

    取最值

    int[] arr = {1,2,3,4,5}; int max = arr[0]; for(int i = 1;i < arr.length;i++) { if(max < arr[i]) { max = arr[i]; } } System.out.println(max);

    倒序存放数组

    让数组第一个元素与最后一个元素交换,第二个与倒数第二个交换…直到数组的一半为止。

    int[] arr = {1,2,3,4,5}; int len = arr.length; for(int i = 0;i < len / 2;i++) { int temp = arr[i]; arr[i] = arr[len-1-i]; arr[len-1-i] = temp; } /*for(int i = 0,j = arr.length - 1;i++,j--){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }*/ for(int i : arr) { System.out.println(i); }

    拼接两个数组

    定义第三个数组 C ,长度为另两个数组的长度之和, 然后将 A 赋值给 C 的前半部分,B 赋给后半部分。

    int[] a = {1,2,3,4,5}; int[] b = {6,7,8,9,10}; int[] c = new int[a.length + b.length]; for(int i = 0;i < a.length;i++) { c[i] = a[i]; } for(int j = 0;j < b.length;j++) { c[a.length + j] = b[j]; } for(int k : c) { System.out.println(k); }

    冒泡排序

    int[] arr = new int[] {32,12,53,72,49}; for(int i = 0; i < arr.length - 1;i++ ) { for(int j = 0;j < arr.length - 1 - i;j++) { if(arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for(int k : arr) { System.out.println(k); }

    动态扩展

    Java中数组是固定长度不能改变的,但实际运用中,经常需要我们动态地扩展数组以适应程序需求。 原理:

    定义两个数组A、B,B的长度为A的长度+1

    将A 的数组元素全部赋值给 B

    然后将 B 的地址 赋值给 A

    如此就实现了 数组A 的动态扩展

    int[] arr = {11,32,26,47}; System.out.println("数组 arr 的初始长度为:" + arr.length); int[] arr2 = new int[arr.length + 1]; for(int i = 0;i < arr.length;i++) { arr2[i] = arr[i]; } arr = arr2; System.out.println("数组 arr 扩展后的长度为:" + arr.length);

    多维数组

    二维数组

    数据类型[][] 数组名 = new 数据类型[一维数组的个数][一维数组中元素个数]; int[][] arr = new int[5][4]; 数据类型[][] 数组名 = new 数据类型[一维数组个数][]; int[][] arr = new int[3][]; 数据类型[][] 数组名 = {{元素1,元素2,元素3,元素4},{元素1,元素2,元素3},{元素1,元素2,元素3,元素4,元素5}}; int[][] arr = {{1,30,28,5},{21,4,33},{9,18,23,90}};
    Processed: 0.013, SQL: 9