美文网首页
Java 二维数组格式、二维数组内存图解、二维数组操作

Java 二维数组格式、二维数组内存图解、二维数组操作

作者: 蛋炒饭_By | 来源:发表于2018-01-11 08:48 被阅读137次

    <pre>

    二维数组格式1

    /*
        二维数组:就是元素为一维数组的一个数组。
    
        格式1:
            数据类型[][] 数组名 = new 数据类型[m][n];
    
            m:表示这个二维数组有多少个一维数组。
            n:表示每一个一维数组的元素有多少个。
    
        注意:
            A:以下格式也可以表示二维数组
                a:数据类型 数组名[][] = new 数据类型[m][n];
                b:数据类型[] 数组名[] = new 数据类型[m][n];
            B:注意下面定义的区别
                int x;
                int y;
                int x,y;
    
                int[] x;
                int[] y[];
    
                int[] x,y[];//这个x是一维数组,y是二维数组
    */
    class Array2Demo {
        public static void main(String[] args) {
             //定义一个二维数组
             int[][] arr = new int[3][2];
             //定义了一个二维数组arr
             //这个二维数组有3个一维数组的元素
             //每一个一维数组有2个元素
             //输出二维数组名称
             System.out.println(arr); //地址值    [[I@175078b
             //输出二维数组的第一个元素一维数组的名称
             System.out.println(arr[0]); //地址值    [I@42552c
             System.out.println(arr[1]); //地址值    [I@e5bbd6
             System.out.println(arr[2]); //地址值    [I@8ee016
             //输出二维数组的元素
             System.out.println(arr[0][0]); //0
             System.out.println(arr[0][1]); //0
        }
    }
    
    

    格式1内存图解

    image
     public static void main(String[] args) {
        // write your code here
    
    //        int[] array = new int[10];
    //        for(int i = 0; i< array.length;i++)
    //        {
    //            array[i] = i+1;
    //        }
    //
    //        for(int i = 0; i< array.length;i++)
    //        {
    //            System.out.println(array[i]);
    //        }
    
            int[][] array = new int[3][2];
            //任何一个二维数组都可以看成一个一维数组(数组中每一个元素又是一个数组)
    //        System.out.println(array.length);//看成的一维数组的长度
    //        System.out.println(array[0].length);
    
            array[0][0] = 1;
            array[0][1] = 2;
    
            array[1][0] = 3;
            array[1][1] = 4;
    
            array[2][0] = 5;
            array[2][1] = 6;
    
            for(int i = 0; i<array.length;i++)
            {
                for(int j = 0; j< array[i].length; j++)
                {
                    System.out.println(array[i][j]);
                }
            }
    
        }
    
    

    二维数组格式2

    /*
        格式2:
            数据类型[][] 数组名 = new 数据类型[m][];
    
            m:表示这个二维数组有多少个一维数组。
            列数没有给出,可以动态的给。这一次是一个变化的列数。
    */
    class Array2Demo2 {
        public static void main(String[] args) {
            //定义数组
            int[][] arr = new int[3][];
    
            System.out.println(arr);    //[[I@175078b
            System.out.println(arr[0]); //null
            System.out.println(arr[1]); //null
            System.out.println(arr[2]); //null
    
            //动态的为每一个一维数组分配空间
            arr[0] = new int[2];
            arr[1] = new int[3];
            arr[2] = new int[1];
    
            System.out.println(arr[0]); //[I@42552c
            System.out.println(arr[1]); //[I@e5bbd6
            System.out.println(arr[2]); //[I@8ee016
    
            System.out.println(arr[0][0]); //0
            System.out.println(arr[0][1]); //0
            //ArrayIndexOutOfBoundsException
            //System.out.println(arr[0][2]); //错误
    
            arr[1][0] = 100;
            arr[1][2] = 200;
        }
    }
    
    

    二维数组格式2 内存图解

    image

    二维数组格式3

    /*
        格式3:
            基本格式:
                数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
            简化版格式:
                数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
    
            举例:
                int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
                int[][] arr = {{1,2,3},{4,5},{6}};
    */
    class Array2Demo3 {
        public static void main(String[] args) {
            //定义数组
            int[][] arr = {{1,2,3},{4,5},{6}};
    
            System.out.println(arr);
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
    
            System.out.println(arr[0][0]); //1
            System.out.println(arr[1][0]); //4
            System.out.println(arr[2][0]); //6
    
            System.out.println(arr[0][1]); //2
            System.out.println(arr[1][1]); //5
            //越界
            System.out.println(arr[2][1]); //错误
        }
    }
    
    

    二维数组格式3 内存图解

    image

    遍历二维数组

    /*
        需求:二维数组遍历
    
        外循环控制的是二维数组的长度,其实就是一维数组的个数。
        内循环控制的是一维数组的长度。
    */
    class Array2Test {
        public static void main(String[] args) {
            //定义一个二维数组
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
    
            //用方法改进
            //调用方法
            printArray2(arr);
        }    
    
        /*
            需求:遍历二维数组
            两个明确:
                返回值类型:void
                参数列表:int[][] arr
        */
        public static void printArray2(int[][] arr) {
            for(int x=0; x<arr.length; x++) {
                for(int y=0; y<arr[x].length; y++) {
                    System.out.print(arr[x][y]+" ");
                }
                System.out.println();
            }
        }
    }
    
    

    二维数组求和

    /*
        公司年销售额求和
        某公司按照季度和月份统计的数据如下:单位(万元)
        第一季度:22,66,44
        第二季度:77,33,88
        第三季度:25,45,65
        第四季度:11,66,99
    
        分析:
            A:把题目的数据用二维数组来表示
                int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
            B:如何求和呢?
                求和其实就是获取到每一个元素,然后累加即可。
            C:定义一个求和变量sum,初始化值是0。
            D:通过遍历就可以得到每一个二维数组的元素。
            E:把元素累加即可。
            F:最后输出sum,就是结果。
    */
    class Array2Test2 {
        public static void main(String[] args) {
            //把题目的数据用二维数组来表示
            int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
    
            //定义一个求和变量sum,初始化值是0。
            int sum = 0;
    
            //通过遍历就可以得到每一个二维数组的元素。
            for(int x=0; x<arr.length; x++) {
                for(int y=0; y<arr[x].length; y++) {
                    //把元素累加即可。
                    sum += arr[x][y];
                }
            }
    
            //最后输出sum,就是结果。
            System.out.println("一年的销售额为:"+sum+"万元");
        }
    }
    
    

    二维数组树出杨辉三角:打印杨辉三角形(行数可以键盘录入)

    image
    /*
    
        需求:打印杨辉三角形(行数可以键盘录入)
        1 1    
    2 1
    3 3 1
    4 6 4 1 
    5 10 10 5 1
    
        分析:看这种图像的规律
            A:任何一行的第一列和最后一列都是1
            B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
    
        步骤:
            A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
              这个n的数据来自于键盘录入。
            B:给这个二维数组任何一行的第一列和最后一列赋值为1
            C:按照规律给其他元素赋值
                从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
            D:遍历这个二维数组。
    */
    import java.util.Scanner;
    
    class Array2Test3 {
        public static void main(String[] args) {
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in);
    
            //这个n的数据来自于键盘录入。
            System.out.println("请输入一个数据:");
            int n = sc.nextInt();
    
            //定义二维数组
            int[][] arr = new int[n][n];
    
            //给这个二维数组任何一行的第一列和最后一列赋值为1
            for(int x=0; x<arr.length; x++) {
                arr[x][0] = 1; //任何一行第1列
                arr[x][x] = 1; //任何一行的最后1列
            }
    
            //按照规律给其他元素赋值
            //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
            for(int x=2; x<arr.length; x++) {
                //这里如果y<=x是有个小问题的,就是最后一列的问题
                //所以这里要减去1
                //并且y也应该从1开始,因为第一列也是有值了
                for(int y=1; y<=x-1; y++) {
                    //每一个数据是它上一行的前一列和它上一行的本列之和。
                    arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
                }
            }
    
            //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
            for(int x=0; x<arr.length; x++) {
                for(int y=0; y<=x; y++) {
                    System.out.print(arr[x][y]+"\t");
                }
                System.out.println();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 二维数组格式、二维数组内存图解、二维数组操作

          本文链接:https://www.haomeiwen.com/subject/octugxtx.html