二维数组的使用

文章详细介绍了二维数组在Java中的三种初始化方式:动态初始化(两种方式)和静态初始化,并通过代码示例进行演示。同时,讨论了二维数组在内存中的存储形式以及注意事项,如一维数组长度可以不同。最后,提供了杨辉三角的实现作为二维数组的应用实例。
摘要由CSDN通过智能技术生成

目录

 需求引出

二维数组的使用方式

1.动态初始化(第一种方式)

2.动态初始化(第二种方式)

3.静态初始化

二维数组的注意事项和使用细节

二维数组在内存中的形式

二维数组练习题

杨辉三角


 需求引出

二维数组,和一维数组相似,本质上二维数组是由一维数组构成的

二维数组的使用方式

1.动态初始化(第一种方式)

语法:类型[]]数组名=new 类型大小

比如:int a =new int2


2.动态初始化(第二种方式)

先声明:类型 数组名[][;

再定义(开辟空间)数组名 =new类型大小

赋值(有默认值,比如int类型的就是0)


3.静态初始化

1.定义 类型 数组名三((值1,值2..),(值1,值2..),(值1,值2..》

2.使用即可固定方式访问]

比如: int[][] arr ={{1,1,1},{8,8,9}{100}};

解读

1.定义了一个二维数组 arr[][]

2.arr有三个元素(每个元素都是一维数组)

3.第一个一维数组有3个元素,第二个一维数组有3个元素,第三个一维数组有1个元素


通过了解上面的三种初始化的方式,我们大致可以知道,初始化二维数组的方式有三种,接下来通过代码更将清楚的了解。

int[][] arr1 = {{1, 2, 3}, {1, 2}};这里表示创建了一个2行3列的一个二位数组,因为二维数组是由一维数组组成的,相当于在二维数组中,第一个一维数组中有三个元素,第二个一维数组中,有2个元素

代码演示:

package com.array;

/**
 * 演示 二维数组的使用
 */
public class TwoDimensionalArray01 {
    public static void main(String[] args) {
        //讲解二维数组初始化的三种方式

//        1.动态初始化(第一种方式)
//        语法:类型[]]数组名=new 类型大小
//        比如
        //int[][] arr = new int[2][3];//表示创建了一个2行3列的二维数组

//        2.动态初始化(第二种方式)
//        先声明:类型 数组名[][]
//        再定义(开辟空间)数组名 =new类型大小
//        赋值(有默认值,比如int类型的就是0)

        int[][] arr;//先声明数组但是并没有为该数组在内存中分配空间
        arr = new int[2][3];//这里是真的创建数组,会在内存中分配空间

//        3.静态初始化
//        1.定义 类型 数组名三((值1,值2..),(值1,值2..),(值1,值2..》
//        2.使用即可固定方式访问]
//        解读
//        1.定义了一个二维数组 arr[][]
//        2.arr有三个元素(每个元素都是一维数组)
//        3.第一个一维数组有3个元素,第二个一维数组有3个元素,第三个一维数组有1个元素

        //这里表示创建了一个2行3列的一个二位数组,因为二维数组是由一维数组组成的,相当于在二维数组中,第一个一维数组中有三个元素,第二个一维数组中,有2个元素
        int[][] arr1 = {{1, 2, 3}, {1, 2}};

    }
}

二维数组的注意事项和使用细节

1.一维数组的声明方式有: int[]x 或者int x[]

2.二维数组的声明方式有: int y或者 int]y 或者int y[][]

3.二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如:map[][]是一个二维数组 map[]={{1,2},{3,4,5}} 由map[0]是一个含有两个元素的一维数组,map[1]是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组

4.二维数组的列一定不可以省略,要指定具体的数

package com.array;

/**
 * 讲解二维数组的细节和注意事项
 */
public class TwoDimensionalArrayDetail {
    public static void main(String[] args) {
//        1.一维数组的声明方式有: int[]x 或者int x[]
        //一维数组的声明方式
        //int[] arr1;
        //int arr2[];

//        2.二维数组的声明方式有: int[][] y或者 int[] y[] 或者int y[][]
        //二维数组的声明方式
        //1.int[][] arr;
        //2.int[] arr[];
        //3.int arr[][];

//        3.二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。
//        比如:map[][]是一个二维数组 map[]={{1,2},{3,4,5}} 由map[0]是一个含有两个元素的一维数组,map[1]是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组

        //创建一个二维数组,使用静态初始化的方式
        int[][] arr = {{1, 2}, {3, 4, 5}};//这是一个两行三列的二维数组,二维数组的本质是一维数组,各个一维数组的长度可以不相同
        //遍历二维数组
        for (int i = 0; i < arr.length; i++) {
            //注意在内存循环遍历的时候要写arr[i].length 表示 得到 对应的 每个一维数组的长度 因为二维数组的本质是一维数组
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

二维数组在内存中的形式

二维数组的本质是由一维数组的组成的,因此每一行的元素其实是一个一维数组的地址,通过这个地址去访问到元素


二维数组练习题

杨辉三角

思路分析:

1.因为我们不知道,二维数组是几行,因此我们并没有指定行的具体值

2.在遍历二维数组的时候,因为杨辉三角的本质就是一个二维数组,而二维数组的本质是一维数组,因为我们在创建二维数组的时候,并没有指定行的具体值,因此,相当于并没有给一维数组开辟空间,如果不单独为一维数组的开辟则默认为null

3.一定要找到的规律,第一列和最后一列都是1 ,然后从第三行开始,

arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];这个规律一定要找到
package com.array;

/**
 * 二维数组的练习题 -> 杨辉三角
 */
public class YangHuiTriangle {
    public static void main(String[] args) {
        /**
         * 注意二维数组的行一定要指定否则语法会报错
         */
        int arr[][] = new int[10][];//创建一个二维数组由于不确定每行的个数所以不指定大小
        for (int i = 0; i < arr.length; i++) {//遍历这个二维数组里有几个一维数组
            //第一行有一个元素第二行有2个元素第n行有n个元素
            //所以在开辟空间的时候用i+1因为i从0开始,因此这样刚好,开辟的大小,刚刚好和需要的长度相同
            //如果没有这句话的话,并没有给一维数组开辟空间,因为二维数组的本质是一维数组,我们在创建二维数组的时候也没有指定列的具体值,因此这里我们需要为一维数组开辟空间
            arr[i] = new int[i + 1];//给每个一维数组开辟空间如果不开辟空间默认为null
            for (int j = 0; j < arr[i].length; j++) {
                if (j == 0 || j == arr[i].length - 1) {//杨辉三角的第一列和最后一列都是1
                    arr[i][j] = 1;
                } else {
                    //剩下的情况是
                    //从第三行开始arr[i][j]=arr[i-1][j]+arr[i-1][j-1]
                    //这是规律必须找到
                    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
                }
            }
        }
        //遍历二维数组
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值