java基础学习 day25(二维数组)

  1. 什么是二维数组:在数组中存放数组
  2. 二维数组的应用场景:当我们需要把数据分组管理的时候,就需要用二维数组。
  3. 静态初始化格式:数据类型【】【】数组名 = new 数据类型【】【】{{元素1,元素2},{元素1,元素2}};
  • 简化格式:数据类型【】【】数组名 = {{元素1,元素2},{元素1,元素2}};
  • 注意:以后这样定义,把每一个一维数组,单独写成一行
  • 每一个一维数组其实是二维数组中的元素,所以每一个一维数组之间需要用逗号隔开,最后一个一维数组后面不需要加逗号。
//例如
int【】【】 arr = {
          {123}{45678}
}
  1. 动态初始化格式:数据类型【】【】数组名 = new 数据类型【m】【n】;
  • m表示这个二维数组,可以存放m个一维数组
  • n表示每一个一维数组,可以存放n个元素
  • 例如:
int【】【】arr = new int3】【5;
//3:表示二维数组的长度为3,可以装3个一维数组
//5:表示每一个一维数组的长度都是5,可以装5个int类型的元素
arr【0】【0= 10//给二维数组赋值一个元素

//遍历二维数组
//外循环:遍历二维数组,获取里面的每一个一维数组
for (int i = 0;i<arr.length;i++){
    //内循环:遍历一维数组,获取一维数组里的每一个元素
    for (int j = 0;j<arr【i】.length;j++){
        sout (arr【i】【j】+ “ ”);
    }
    sout ();
}
// 10 0 0 0 0
//  0 0 0 0 0
//  0 0 0 0 0
  1. 获取元素
    对 arr【i】【j】来说
  • arr:表示二维数组名,存储二维数组整体内存空间的地址
  • i:二维数组的索引,获取出来的是一维数组
  • j:一维数组的索引,获取出来的就是一维数组里的真正的元素。
//例如
int【】【】 arr = {          
         {123}{45678}
}// sout (arr【0】) 表示打印二维数组中的第一个一维数组
// arr【0】【0】表示获取第一个一维数组中的0索引对应的元素
sout (arr【0】【0);//1
sout (arr【1】【4);//8
sout (arr【2】【0);//ArrayIndexOutOfBoundsException,超出数组长度,越界了。
  1. 遍历
//例如
int【】【】 arr = {                   
         {123}{45678}
}//外循环:遍历一遍二维数组,得到里面的每一个一维数组
for (int i = 0;i<arr.length;i++){
    //i:表示二维数组里的每一个索引,对应一个一维数组
    //arr【i】: 表示二维数组中的每一个元素(一维数组)
    //内循环:遍历一维数组,得到里面的每一个元素
    forint j=0;j<arr【i】.length;j++{
        //j:表示一维数组中的每一个索引
        //arr【i】【j】:表示真正的,一维数组里的元素。
        sout (arr【i】【j】+“ “);
    }
}
  1. 二维数组的内存图
    在这里插入图片描述
  • 程序会先根据arr【2】中的2,在堆内存中,申请一片空间,存放两个null值(地址值),并把这片空间的地址值给arr。
  • 之后又会根据arr【2】【3】中的2和3,在堆内存中,再申请2片空间,每片空间存放3个0值(int类型默认值),并把这2片空间的地址值覆盖掉对应的null,即给arr【0】和arr【1】
  1. 两个特殊情况
    在这里插入图片描述
  • 不写二维数组后一个【】里的数字,表示不创建二维数组中对应的一维数组,只预留了对应地址值的空位(默认值为null),等手动创建好一维数组后,再将地址值填入即可。
  • 好处:不用创建长度固定的一维数组,可以根据实际,灵活选择一维数组的长度。
    在这里插入图片描述
  • 用新一维数组的地址值覆盖掉原来二维数组中存储的一维数组的地址值。
  • 会导致原来存储的一维数组没有用了,就会被作为垃圾回收掉
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是Java编写的日历记事本的示例代码: ```java import java.util.Scanner; public class CalendarNotes { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[][] calendar = new int[12][31]; while (true) { System.out.println("请选择操作:"); System.out.println("1. 添加日记"); System.out.println("2. 查看日历"); System.out.println("3. 退出程序"); int choice = scanner.nextInt(); if (choice == 1) { System.out.println("请输入日期(格式为:月份-日期):"); scanner.nextLine(); String dateInput = scanner.nextLine(); String[] dateArray = dateInput.split("-"); int month = Integer.parseInt(dateArray[0]) - 1; int day = Integer.parseInt(dateArray[1]) - 1; System.out.println("请输入日记内容:"); String note = scanner.nextLine(); calendar[month][day] = note.hashCode(); System.out.println("日记添加成功!"); } else if (choice == 2) { System.out.println("请输入要查看的月份:"); int month = scanner.nextInt() - 1; System.out.println("请输入要查看的日期:"); int day = scanner.nextInt() - 1; int note = calendar[month][day]; System.out.println("日记内容为:" + (note == 0 ? "无" : note)); } else if (choice == 3) { System.out.println("程序已退出。"); break; } else { System.out.println("输入有误,请重新输入。"); } } } } ``` 该程序使用二维数组来存储日记内容,每个元素存储一个日记的哈希值,如果该日期没有日记,则元素值为0。用户可以选择添加日记、查看日历或退出程序。添加日记时,用户需要输入日期和日记内容,程序会将日记内容的哈希值存储在对应的数组元素中。查看日历时,用户需要输入要查看的日期,程序会输出该日期的日记内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丿罗小黑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值