数组

初始化

静态初始化:创建+赋值

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

动态初始化:包含默认初始化

int[] b = new int[10];
b[0] = 10;
System.out.println(b[1];)

数组的四个基本特点

1.长度是确定的,一旦创建,大小就不可改变

2.元素类型都是相同的

3.数组中的可以是任何数据类型,包括基本类型和引用类型

4.数组变量属引用类型,数组也可以看成是对象,每个元素相当于该对象的成员变量;数组对象本身是在堆中的

数组的基本操作

package Array;

public class Demo01 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};

        //遍历该数组
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);

        }
        System.out.println("===========================");
        //计算所有元素的和
        int sum = 0;
        for (int i = 0; i < arrays.length; i++) {
            sum+=arrays[i];
        }
        System.out.println("sum=" + sum);
        System.out.println("===========================");
        //查找最大元素
        int max = arrays[0];
        for (int i = 1; i < arrays.length; i++) {
            if(arrays[i] > max){
                max = arrays[i];
            }
        }
        System.out.println("max=" + max);
    }
}

数组的进阶操作

package Array;

public class Demo02 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        //printArray(arrays);
        int[] reverse = reverse(arrays);
        printArray(reverse);
    }
    //打印数组
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
    }
    //反转数组
    public static int[] reverse(int[] arrays){
        int[] result = new int[arrays.length];
        for (int i = 0,j=result.length-1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];
        }
        return result;
    }
}

多维数组

定义:数组的数组;每一个元素都是一个一维数组

二维数组的打印

package Array;

public class Demo03 {
    public static void main(String[] args) {
        int[][] arrays = {{1,2},{2,3},{3,4},{4,5}};
        for (int i = 0; i < arrays.length; i++) {
            for(int j = 0;j < arrays[i].length;j++){
                System.out.println(arrays[i][j]);
            }
        }
    }
    //打印数组
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
    }
}

Arrays类

package Array;

import java.util.Arrays;

public class Demo04 {
    public static void main(String[] args) {
        int[] a = {5,968,227,13,58,67};
        System.out.println(a);
        //1.打印数组元素
        //System.out.println(Arrays.toString(a));
       // printArray(a);

        //2.数组排序
//        Arrays.sort(a);//升序排序
//        System.out.println(Arrays.toString(a));


        //3.fill方法给数组赋值
//        Arrays.fill(a,5);
//        System.out.println(Arrays.toString(a));
//        //区间赋值
//        Arrays.fill(a,2,4,6 );
//        System.out.println(Arrays.toString(a));

        //4.equals 比较数组是否相等
        int[] b = {5,968,227,13,58,67};
        int[] c = {8,99,67,52,34,86,4};
        boolean flag1 = Arrays.equals(a,b);
        boolean flag2 = Arrays.equals(a,c);
        System.out.println(flag1);
        System.out.println(flag2);
    }

    }


冒泡排序

package Array;

import java.util.Arrays;

public class Demo05 {
    public static void main(String[] args) {
        int[] arrays = {5,68,72,36,49,88,71,19,23,54};
        int[] newArrays = sort(arrays);
        System.out.println(Arrays.toString(newArrays));
    }
    //冒泡排序
    //1.每两个相邻的数进行一次比较,若第二个数比第一个数小,则交换他们的位置
    public static int[] sort(int[] array){
        //外层循环确定交换的次数
        int temp = 0;
        boolean flag = false;//通过一个标识来减少无意义的比较
        for (int i = 0; i < array.length-1; i++) {
            //内层循环用来比较,然后交换它们的值
            for(int j = 0;j < array.length-1-i;j++){
                if(array[j+1] < array[j]){
                    //先定义一个临时变量来存储这个值
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    flag = true;
                }

                }
            if(flag == false){
                //没有进行比较则跳出循环
                break;
            }
        }
        return array;
    }
}

稀疏数组

当一个数组中大部分元素为0,或者同一值的数组时,可以使用稀疏数组来保存该数组

处理方式

1.记录数组一共有几行几列,有多少个不同值

2.把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

image-20250731173443789

package Array;

public class Demo06 {
    public static void main(String[] args) {
        //1.创建一个二维数组 11*11 0:没有棋子  1:黑棋   2:白棋
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //输出原始数组
        System.out.println("输出原始数组:");
        for (int i = 0; i < array1.length; i++) {
            for(int j = 0;j <array1[i].length;j++){
                System.out.print(array1[i][j] + "\t");
            }
            System.out.println();
        }
        System.out.println("==========================");
        //转换为稀疏数组,获取有效值的个数
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if(array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效值的个数为:" + sum);
        //创建稀疏数组
        int[][] array2 = new int[sum+1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;
        //遍历原始数组,获取非零值
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if(array1[i][j]!=0){
                    count ++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
        }
        System.out.println("输出稀疏数组:");
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i][0] + "\t" +
                    array2[i][1] + "\t"+
                    array2[i][2] + "\t");
        }
    }
}

posted @ 2025-08-01 10:02  神也忧伤  阅读(10)  评论(0)    收藏  举报