数组---Java

数组的总结

1. 数组的初始化

package com.wxdStudyJava.array;
public class Demo02 {
    public static void main(String[] args) {
        //静态初始化:创建 + 赋值
        int[] a = {1,2,3,4,5,6,7,8};
        System.out.println(a[0]);

        //动态初始化:包含默认初始化 String -> NULL   int -> 0
        int[] b = new int[10];
        b[0] = 10;

        System.out.println(b[0]);
    }

}

image-20210210201407332

关于堆与栈,推荐这篇博客:

JAVA中的栈和堆

2. Arrays类

package com.wxdStudyJava.array;


import java.util.Arrays;

public class ArrayDemo04 {
    public static void main(String[] args) {
        int a[] = {1,2,3,4,9090,31231,543,21,3,23};

        //打印数组元素
        System.out.println(Arrays.toString(a));

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

        //填充数组
        Arrays.fill(a,2,4,0);//从2到4填充为0   左闭右开  [2,4)
        System.out.println(Arrays.toString(a));

    }
}

等等还有一系列的方法可以按住ctrl再点击Arrays来查看

3. 增强for循环和数组简单应用

package com.wxdStudyJava.array;

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

        //增强for循环   array.for   省去了数组的下标,适合打印输出
//        for (int i : array) {
//            System.out.println(i);
//        }

        printArray(array);
        System.out.println();
        reverse(array);
    }

    //打印数组
    public static void printArray(int[] array){
        for (int i : array) {
            System.out.print(i+" ");
        }
    }

    //反转数组
    public static  void reverse(int[] array){
        int[] result = new int[array.length];
        for(int i = 0,j = array.length-1; i < array.length; i++,j--){
            result[j] = array[i];
        }
        printArray(result);
    }
}

4. 稀疏数组

package com.wxdStudyJava.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;
        //输出原始数组
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }

        //转换为稀疏数组
        //1.获取有效值的个数
        int sum = 0;
        for(int i = 0; i < 11; i++){
            for(int j = 0; j < 11; j++){
                if(array1[i][j] != 0){
                    sum++;
                }
            }
        }

        //2.创建稀疏数组
        int[][] array2 = new int[sum+1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;

        //遍历二维数组,将非0的值存入稀疏数组
        int count = 0;
        for(int i = 0; i < 11; i++){
            for(int j = 0; j < 11; 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[] ints : array2) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        System.out.println("===============");
        //3.还原数组
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        for(int i = 1; i < array2.length; i++){
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}

5. 关于多维数组

因为拥有c语言的基础,多维数组可以逐级分解来理解:

二维数组,即数组中的每个元素都是一个一维数组;

三维数组,即数组中的每个元素都是一个二维数组,而这每个二维数组中又储存了多个一维数组;

以此类推。

posted @ 2021-02-20 16:39  Asstrong  阅读(44)  评论(0)    收藏  举报