[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个元素
		
//动态初始化2
String[][] 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);//2
System.out.println("获取二维数组中第一个一维数组元素的个数:" + names[0].length);//3
System.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("---------------");
        
//遍历数组 -- foreach
for (String[] ss : names) {
   for (String element : ss) {
      System.out.println(element);
    }
}

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单^不简单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值