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

2023-11-05

  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),等手动创建好一维数组后,再将地址值填入即可。
  • 好处:不用创建长度固定的一维数组,可以根据实际,灵活选择一维数组的长度。
    在这里插入图片描述
  • 用新一维数组的地址值覆盖掉原来二维数组中存储的一维数组的地址值。
  • 会导致原来存储的一维数组没有用了,就会被作为垃圾回收掉
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java基础学习 day25(二维数组) 的相关文章

随机推荐

  • Mac os 10.14装virtualbox 失败的解决方案

    1 Mac 系统装virtualbox 失败如下 2 由于Mac 10 14的安全级别更高 所以导致这个软件安装过程失败 需要一下操作安装就没问题 2 1 开启通用里的允许任何来源 sudo spctl master disable 2 2
  • LeetCode 44 Wildcard Matching (通配符匹配 记忆化搜索 剪枝 推荐)

    Given an input string s and a pattern p implement wildcard pattern matching with support for and Matches any single char
  • Freertos中vTaskDelay()是怎么用的

    1 常见的使用场景 void vLED Task void pvParameters while 1 Heartbeat LED vTaskDelay 1000 portTICK RATE MS 说明 上面这段代码的意思是 led翻转后经过
  • Exception in thread "main" java.lang.NoClassDefFoundError解决

    1 错误描述 Exception in thread main java lang NoClassDefFoundError HelloWorld wrong name org xuwei HelloWorld at java lang C
  • 2018年最好的8款杀毒软件

    如今 网络犯罪和欺骗和攻击电脑的病毒 特洛伊木马和网络钓鱼诈骗导致损失的事件并没有像人们想像的那么频繁发生 这意味着很多人正在使用最强大的安全软件保护自己的电脑 而其一如既往地重要 这就是为什么推出这个2018年全球最佳防病毒软件名单的原因
  • 搭建商城的微服务架构-1

    创建父项目 mall 先创建一个 父项目 mall 再在这个父项目中创建多个子项目 修改pom文件 最终mall的pom文件如下
  • 目标检测算法回顾之Anchor free篇章

    基于anchor free的目标检测方法 一 背景与定义 1 1 anchor based的特征 1 2 anchor的好处 1 3 anchor的局限 1 4 anchor free 与anchor based的区别 二 概述 三 早期探
  • 以太坊2.0 节点搭建:共识端+执行端

    1 配置 本人使用配置 共识端 prysm 版本 3 1 1 执行端 geth 版本 1 10 23 当前使用1 10 25 OS centos7 6 CPU 8核 Memory 16GB RAM Storage 3T SSD Networ
  • 算法梳理boosting\bagging\RF(1)

    LeetCode题目记录 1 集成学习概念 1 1 集成学习分类 1 2 集成学习步骤 2 个体学习器概念 3 boosting bagging 3 1 boosting 3 2 bagging 3 3 二者的区别 4 随机森林的思想 5
  • mlxtend实现简单的Apriori算法(关联算法)

    关联算法有几个重要的概念 下面以官方教程为例 Apple Beer Rice Chicken Apple Beer Rice Apple Beer Apple Bananas Milk Beer Rice Chicken Milk Beer
  • springmvc使用JSR-303进行校验

    下面提供一种springmvc的校验方案 一般没有校验或者手动写validator的话都要写好多代码好多if判断 使用JSR 303规范校验只需要在Pojo字段上加上相应的注解就可以实现校验了 1 依赖的jar包 我直接贴pom了
  • cannot find -l 问题处理

    graalvm打包最后一步 第七步 报错 主要错误简述 It appears as though libstdc a is missing Please install it cannot find lstdc 几个要点 1 l是link的
  • c++模板的概念全新解释

    文章目录 前言 一 模板的概念 强类型的严格性和灵活性 解决冲突的路径 模板的概念 一 1 函数模板 函数模板的定义 函数模板的实例化 函数模板的重载 1 函数模板的重载 2 用普通函数重载函数模板 3 用特定函数重载函数模板 类模板 类模
  • Jsch网络工具包的使用及源码简析

    一 背景 最近 导师安排了些看论文文献并整理论文至文件服务器的工作 在实验的过程中 我们知道常见的上传文件至服务器有以下方式 ftp sftp协议进行上传 ssh连接 并通过scp命令进行上传 通过xftp xshell ftplina等图
  • 【QT】Qt Creator 右击添加库无反应解决方案【转发】

    一 软件版本 Qt 5 9 0 二 问题现象 想向工程添加外部库 但点击添加库无反应 三 解决方案 1 打开 pro 文件 2 在 pro 文件界面内 右击鼠标 选择添加库 3 添加库的 UI 弹出 四 总结 Qt 5 9 0 Creato
  • c#.net常用的小函数参考

    选择自 crabapple2 的 Blog c net常用的小函数和方法集 1 DateTime 数字型 System DateTime currentTime new System DateTime 1 1 取当前年月日时分秒 curre
  • 记录JsonNode文本处理asText()和toString()的差异

    原文地址 https blog csdn net xudc0521 article details 89926158 最近使用JsonNode解析json字符串时 遇到一个与预期不一致的小问题 记录一下 先来看一个Test author x
  • log4j问题解决:log4j:WARN No appenders could be found for logger

    在resources目录下新建log4j properties文件 添加以下代码 log4j rootLogger ERROR log4j appender CONSOLE org apache log4j ConsoleAppender
  • 浙江大学 陈越_浙江大学陈越教授开展“程序设计课程建设”讲座

    12月10日下午 媒体工程学院耿卫东院长邀请了浙江大学陈越教授开展 程序设计课程建设 讲座 学院各课程群负责人 专业主任及其他专业教师共30余人聆听了讲座 并围绕 程序设计课程建设 的主题展开了深入探讨和交流 学院副院长章化冰主持讲座 代表
  • java基础学习 day25(二维数组)

    什么是二维数组 在数组中存放数组 二维数组的应用场景 当我们需要把数据分组管理的时候 就需要用二维数组 静态初始化格式 数据类型 数组名 new 数据类型 元素1 元素2 元素1 元素2 简化格式 数据类型 数组名 元素1 元素2 元素1