> 文档中心 > [JavaSE] 二维数组详解【静态初始化和动态初始化区别】—Day13

[JavaSE] 二维数组详解【静态初始化和动态初始化区别】—Day13


✅作者:Vengo€bs
🔥系列专栏:JavaSE
💖如果文章有错误,时刻欢迎大家的指正。当然觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝
💬格言:希望我们都能朝着光走‍‍‍🐱‍🏍

目录

✏️ 概念

✏️ 作用

✏️ 数组的声明

✏️ 数组的初始化

1.静态初始化

静态初始化1

静态初始化2(先声明,再初始化)

静态初始化3(简化静态初始化1)

2.动态初始化

✏️ 数组的使用

1.设置指定下标上的元素

2.获取指定下标上的元素

3.获取长度

4.数组的遍历


概念

   什么是二维数组呢?

   二维数组本质上是以数组作为数组元素的数组,即数组的数组。

  • 二维数组就是一个有行和列的矩阵,每一行代表一个数组,即数组的数组;
  • 每一行数组内元素所在的位置可以用行和列号来表示;

作用

可以保存更大批量同类型的数据

数组的声明

数据类型[][] 数组名;

注意:1、二维数组是引用数据类型

           2、元素:数组中的数据

           3、下标/索引:每个元素的编号

           4、下标从0开始

           5、数组初始化后长度不可改变

           6、数组分配空间是连续的

二维数组内的两个一维数组不一定连续,但是数组内的元素一定连续

数组的初始化

1.静态初始化

由程序员指定数据,长度由系统自动分配

静态初始化1

String[][] names = new String[][]{{"麻生希","椎名空","水菜丽"},{"樱井步","濑亚美莉","小峰由衣","泷泽萝拉"}};        

静态初始化2(先声明,再初始化)

String[][] names;names = new String[][]{{"麻生希","椎名空","水菜丽"},{"樱井步","濑亚美莉","小峰由衣","泷泽萝拉"}};        

静态初始化3(简化静态初始化1)

String[][] names = {{"麻生希","椎名空","水菜丽"},{"樱井步","濑亚美莉","小峰由衣","泷泽萝拉"}};

例子:

public class Test01 {public static void main(String[] args) {String[][] names ={{"黄子韬","张艺兴","鹿晗"},{"王俊凯","任嘉伦","胡歌","刘亦菲"}};//设置下标元素names[1][1]="李易峰";//获取指定下标上的元素String n = names[1][1];System.out.println("获取指定下标上的元素:"+n);//设置 }}

此时,二维数组静态初始化内存图为:

2.动态初始化

由程序员指定长度,数据由系统自动分配

动态初始化系统会赋默认值

例子

public static void main(String[] args) {int[][] names =new int[2][3];float[][] names1 =new float[2][3];boolean[][] names2 =new boolean[2][3];String[][] names3 =new String[2][3];//获取指定小标上的元素System.out.println(names[1][1]);System.out.println(names1[1][1]);System.out.println(names2[1][1]);System.out.println(names3[1][1]);}

运行结果:


默认值类型:
       整数类型:0
       浮点类型:0.0
       字符类型:' '
        布尔类型:false
        引用类型:null - 空 

//动态初始化1//String[][] names = new String[2][3];//声明2个一维数组,每个一维数组有3个元素//动态初始化2String[][] names;names = new String[2][3];//声明2个一维数组,每个一维数组有3个元素

例子1:

public class Test01 {public static void main(String[] args) {String[][] names =new String[2][3];   //设置指定下标的元素names[0][0] = "小白1";names[0][1] = "小白2";names[0][2] = "小白3";names[1][0] = "小白4";names[1][1] = "小白5";names[1][2] = "小白6";//获取指定小标上的元素String n = names[1][1];System.out.println(n);}}

此时,二维数组动态初始化内存图为:

例子2

public class Test02 {public static void main(String[] args) {String names[][] = new String[2][];String[] ns1={"黄子韬","张艺兴","鹿晗"};names[0]=ns1;String[] ns2={"王俊凯","任嘉伦","胡歌","刘亦菲"};names[1]=ns2;for (String[] ss : names) {for (String element : ss) {System.out.println(element);}}}}

 此时,内存图结构为:

 静态初始化 vs 动态初始化
         *     一开始就知道存储的数据,使用静态初始化
         *     一开始只知道长度,使用动态初始化

数组的使用

1.设置指定下标上的元素

names[1][1] = "小白";

2.获取指定下标上的元素

String n = names[1][1];System.out.println("获取指定下标上的元素:" + n);//小白

3.获取长度

System.out.println("获取二维数组中一维数组的个数:" + names.length);//2System.out.println("获取二维数组中第一个一维数组元素的个数:" + names[0].length);//3System.out.println("获取二维数组中第二个一维数组元素的个数:" + names[1].length);//4

4.数组的遍历

        遍历的思路:先取出二维数组中的一维数组,再遍历一维数组中的元素

//遍历数组 -- for循环for (int i = 0; i < names.length; i++) {  for (int j = 0; j < names[i].length; j++) {      System.out.println(names[i][j]);   }}System.out.println("---------------");        //遍历数组 -- foreachfor (String[] ss : names) {   for (String element : ss) {      System.out.println(element);    }}

期待大家的指正,后面持续输出!!🏆