2024年java基础二维数组

java基础二维数组Java 二维数组 超详解 什么是二维数组 元素为一维数组的数组就称为二维数组 二维数组的定义格式 格式一 元素的数据类型 数组的名字 new 元素的数据类型 二维数组的长度 一维数组的长度 数组 3 个 每个一维数组 2 个元素 格式二 元素的数据类型 数组的名字 new 元素的数据类型 二维数组的长度 3 个一维数组 每个一维数组的元素不确定

大家好,我是讯享网,很高兴认识大家。



【Java二维数组】(超详解)

什么是二维数组

元素为一维数组的数组就称为二维数组

 
讯享网 

格式二:元素的数据类型[][] 数组的名字 = new 元素的数据类型[二维数组的长度][];

讯享网

3个一维数组,每个一维数组的元素不确定,而且每一个一维数组中的元素的个数是可以不一样的

格式三:元素的数据类型[][] 数组的名字 = {{元素1,元素2,...}, {元素1,元素2,...}, ...};

 

3个一维数组
第一个一维数组中有3个元素
第二个一维数组中有2个元素
第三个一维数组中有4个元素
每一个一维数组中的元素的个数是可以不一样的

访问二维数组

讯享网

原文链接:https://blog.csdn.net/_/article/details/

下面是java脚本之家的,感谢.

一、二维数组

img

经过艰苦卓绝的战斗,终于有了一笔钱,现在我打算配置好的游戏装备,我现在有了一个枪柜,它可java基础二维数组以存放三层的枪械,每一层都可以放多把武器(这个就是二维数组,有多层,每层都是一个一维数组)

img

随着游戏时长和我的高超技术,获取游戏装备的效率越来越高了,一个枪柜已经存不下了,于是,我就有了多个枪柜(这个就是多维数组,单个维度存放的就是单个的二维数组,单个二维数组中有多个一维数组~):

img

上图从一维数组到多维数组的演变是不是很形象,哈哈

二维数组的定义

  • 二维数组,本质上就是一个数组,它内部又包含了多个一维数组
  • 二维数组也可以看成一个二维表,行*列组成的二维表,只不过这个二维表,每一行的列数还可能不同。但是每一个单元格中的元素的数据类型是一致的,例如:都是int,都是String等

img

  • 二维数组的标记: [][]

二、二维数组的声明与初始化

2.1 声明

  • 声明一个二维数组
  • int[][] arr;

语法格式

 

照例,我把一些不推荐但是不会造成编译异常的写法放上,因为有的面试题会遇到,有印象就好

2.2 初始化

  • 初始化如同一维数组一样,同样有两种方法
2.2.1 静态初始化
 

示例代码1:

 

示例代码2:

 
2.2.2 动态初始化

动态初始化创建可以不用声明里面一维数组的长度,因此,它每个一维数组长度可以不一样,so,就有了下面两种初始化方式:

  • 动态初始化一(规则二维表)

程序员指定数组的长度,后期再赋值(系统会先给定元素默认初始值)

规则二维表:每一行的列数是相同的

格式

 

示例代码:

 

动态初始化二(不规则二维表)

不规则二维表:每一行的列数可能不一样

格式

 

不规则二维表,声明后,初始话内部一维数组时不能简写

 

示例代码1:

 

示例代码2:

 

注意事项:如果是静态初始化,右边new 数据类型[][]中不能写数字,因为行数和列数,由{}的元素个数决定

三、二维数组的遍历

  • 二维数组的遍历,同一维数组一样,区别就是,我们首先在外循环,遍历每一个一维数组,内循环中的 I 就是每一个一维数组的内存伪地址
  • 格式
 

四、二维数组的内存图分析

二维数组再内存图中的流程,如下图:

img

流程步骤:

1.首先创建main方法,这个main方法会存在栈内存中,(这个内存中的栈,堆前面有提到过,忘了没关系,我下一章还会再分享一下)

2.静态初始化创建二维数组arr, 于是在栈内存中,创建一个 int[][] arr=

3.在栈内存创建二维数组int[][]时,里面的值会在堆内存开辟一个空间,左边的是二维数组,因为存储了三个一维数组,因此,它有三个元素,右边分别开辟三个一维数组的内存空间

4.每个内存空间都有一个地址,二维数组中存储的是一维数组的地址,而栈内存int[][]arr = 存储的是二维数组的内存地址

5.所以,第一个打印arr的二维数组是Java源码转换后的内存地址,第二个是二维数组中第一个一维数组的内存地址

6.第三个打印是二维数组中第一个一维数组中的第一个元素

五、数组操作的常见异常

数组越界异常

示例代码:

 

越界异常图

img

异常原因

创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码

数组空指针异常

示例代码:

 

空指针异常图

imgimg

异常原因

异常原因:因为此时数组的每一行还未分配具体存储元素的空间,此时arr[0]是null,此时访问arr[0][0]会抛出NullPointerException 空指针异常。

六、总结

小讯
上一篇 2025-01-01 22:06
下一篇 2024-12-26 16:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/8218.html