咳咳,有小伙伴公众号私信说需要出一期二维数组 的知识点,我翻了翻公众号的历史文章,果然没有,这边自罚一杯

1. 二维数组基本概念

之前我们已经知道什么是 数组(一维数组)javaj基础—数组,数组的存取

这里补充一点: 数组本身是引用数据类型 ,数组的元素 可以是 基本数据类型 跟 引用数据类型

那么?什么是二维数组 ?

官方定义:以一维数组作为一维数组元素的数组

要是有点绕,不好理解,没关系,简单来说,就是一维数组里面存一维数组 ,这就是二维数组

到这,是不是已经基本明白了二维数组的概念了

现在我们直接来看语法:

2. 二维数组语法格式

数据类型 [][] 标识符(自己取的名字) = { {},{},{} … }

回顾一下一维数组 这种创建方式:

从外表来看二维数组就比一位数组 多 加了个 [ ], 数组内的元素也不是 个数了,而是 { } ,这个代表的是一个一维数组,里面内容一样是元素

  // 这是一维数组int[]  arr1 = {1,2,3};// 这是一个二维数组int[][]  arr2 = {{1,2,3},{2,3},{6,3,9}};

数据类型 [][] 标识符(自己取的名字)= new 数据类型[数组里元素个数][每个元素里面一维数组长度]

数组里元素个数 = 二维数组长度

int[][]  array1 = new int[3][2];

来看个图解


声明一个二维数组array1,里面有三个元素,每个元素里面有两个元素的数组

3. 二维数组的取值

单个取值

二维数组的取值呢,跟一维数组还是有差别的

比如下面这个例子,我们要获取这个二维数组中的 6

int[][]  arr2 = {{1,2,3},{2,3},{6,3,9}};

这边我们可以理解成一个平面坐标系,坐标系我们都知道,(x,y)我们可以确定一个平面点的位置,这边也一样

首先可以看出这个二维数组里面有三个元素:

元素1: 下标 0 (数组的角标从0 开始),{1,2,3}

元素2: 下标 1,{2,3}

元素3: 下标 2,{6,3,9}

每个元素又是一个数组,下标还是从0 开始

所以 我们获取 6 这个元素 arr2[2][0], 意味着 6 在这个 二维数组中 元素3 (下标2) 里面 的 数组 的 第1个(下标0) 元素

int[][]  arr2 = {{1,2,3},{2,3},{6,3,9}};System.out.println(arr2[2][0]);


这种方式的也一样:int[][] array1 = new int[3][2];

可以理解成 3 行 2 列

遍历取值

我们来看看二维数组是怎么遍历的,这边我们就需要两层 for循环了

比如:

遍历 int[][] arr2 = {{1,2,3},{6,3,9,10}};

 int[][]  arr2 = {{1,2,3},{6,3,9,10}};System.out.println("----------基本循环----------");for (int i = 0; i < arr2.length; i++) {for (int j = 0;j < arr2[i].length;j++) {System.out.print(arr2[i][j]+" ");}}System.out.println();System.out.println("----------增强for循环----------");for (int[] ints : arr2) {for (int anInt : ints) {System.out.print(anInt+" ");}}

输出结果:


4. 存值
二维数组的 存值 你可以 一个一个来, arr[0][0] 。。。。

  int[][] arr = new int[3][2];arr[0][0] = 1;arr[0][1] = 3;arr[1][0] = 5;arr[1][1] = 7;arr[2][0] = 9;arr[2][1] =11;for (int[] ints : arr) {for (int anInt : ints) {System.out.println(anInt);}}

当然里面是存的一维数组,你也可以这样 ,比如有两个一维数组 ,一维数组的值怎么来,就不用多说了,除了常规添加外,java 基础——数组 可以看看逗号隔开字符串转数组方法 (开发中数组转字符串,转list集合用的很多)

比如 现在有两个字符串,要存储到二维数组中

//定义一个二维数组String [][] arr =  new  String[3][2];String   str1  = "2,3,6,9";String   str2  = "11,13";//字符串转数组String[] split = str1.split(",");String[] split1 = str2.split(",");//将二维数组第一个元素的值设置为 一维数组 splitarr[0] = split;//将二维数组第二个元素的值设置为 一维数组 split1arr[1] = split1;//输出看看for (String[] strings : arr) {for (String string : strings) {System.out.println(string);}}


这里也可以看到二维数组中 一维数组的长度可以不一样 ,第三个没有元素,就是我们定义的默认一维数组长度 2 了,为null


扩展 :二维数组的初始化内存解析 (有的面试会问,有个印象)

现在我们知道了二维数组 获取单个 元素,以及 遍历 , 下面我们来加深下对二维数组的理解

一般我们声明二维数组的初始化 ,


int[][]  arr = new  int [3][2];

它的外层元素:arr[0] arr[1] arr[2] …

它的内层元素:arr[0][0] arr[1][2] …

内层元素我们都知道,是获取一个具体的值

那么?外层是什么东西呢?我们来打印一下

 int[][]  arr = new  int [3][2];System.out.println(arr[0]);


可以看出它是一个地址值,这是二维 元素 指向 一位数组的地址值


arr 才是栈 指向 二维数组的地址值

int[][]  arr = new  int [3][2];System.out.println(arr);


看出区别了没,一维数组一个[ 二维数组 两个[


到这,欢迎关注公众号~ ,打开微信扫一扫

超详细 java二维数组解析相关推荐

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

    [Java二维数组](超详解) 什么是二维数组 二维数组的定义格式 访问二维数组 什么是二维数组 元素为一维数组的数组就称为二维数组 二维数组的定义格式 格式一:元素的数据类型[][] 数组的名字 = ...

  2. java二维数组杨辉三角_实验----Java的二维数组的应用及杨辉三角的编写

    (1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...

  3. java二维数组长度表示,java二维数组指定不同长度代码实例

    本篇文章小编给大家分享一下java二维数组指定不同长度代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.二维数组的每个元素都是一个一维数组, ...

  4. java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分、最低分、总分、平均分

    java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分.最低分.总分.平均分 import java.util.Scanner;/* * 二维数组存储数 ...

  5. java二维数组的遍历

    java二维数组的遍历 /* * java二维数组的遍历 * 二维数组,数组座位数组元素类型的数组,数组的数组 * */ public class Test14 {public static void ...

  6. 案例演示Python二维列表与Java二维数组

    1.Python二维列表案例演示 运行程序,结果如下: 2.案例演示Java二维数组 package net.hw.test;/*** 功能:二维数组用法示例* 作者:华卫* 日期:2013年12月1 ...

  7. java二维数组遍历与元素查找

    java二维数组 格式 数据类型 [ ][ ] arrayName = new 数据类型[一维数组的个数][每个一维数组的长度] 例如: int [ ][ ] array = new int [2][ ...

  8. Java二维数组实现学生管理系统

    Java二维数组实现学生管理系统 一.预备知识 1.二维数组的创建1) DataType [][] name=new DataType[10][];2) DataType [][] name=new ...

  9. 杰神之JAVA二维数组(案例:走迷宫)

    Java二维数组(案例:走迷宫) 二维数组 数组的数组-二维数组的每一个元素是一个一维数组 定义方式: 数据类型[][] 数组名 = new 数据类型[长度][长度]; 数据类型[][] 数组名 = ...

最新文章

  1. mac怎么用python3.0_怎么在mac中使用python
  2. mongodb 复制集 维护小结
  3. golang 映射 map 简介
  4. 【链接】调查显示:超20%美国大学生曾花学生贷款投
  5. .计算机自动关机或重启,电脑自动关机或者重启怎么处理
  6. 简单三分钟,本地搭建k8s
  7. app开发第二次总结
  8. 极客学院视频源码资料
  9. 一名爬虫工程师的运维入门之路:IPy学习笔记
  10. LNMP下Redis介绍以及安装(Linux)
  11. 九度OJ 1340:小A的计算器 (进制转换)
  12. datagridview表中插入一行_excel表格技巧:Ctrl+T在超级表中的妙用
  13. mybatis mysql 自增_利用Java的MyBatis框架获取MySQL中插入记录时的自增主键
  14. 通信中间件技术之DDS
  15. Fcitx 在 LumaQQ中的设置
  16. 基于hutool实现简单的加解密
  17. 【读点论文】ViTGAN: Training GANs with Vision Transformers 将视觉transformer和gan结合起来
  18. Android 开启混淆后序列化的问题 Parcelable encountered IOException writing serializable object
  19. RTB广告技术修炼之-流量漫游
  20. win10 设备管理器显示便捷设备

热门文章

  1. IOS app电量测试方法调研
  2. 黑马程序员——C基础之疯狂猜数游戏
  3. 分布式事务中2PC与3PC的区别
  4. 网易/美团/PingCAP/贝壳/爱奇艺大咖分享:云原生如何加速行业创新发展(附PPT下载)
  5. 樊登读书分享ppt_樊登读书会《游戏改变世界》课件.ppt
  6. 古诗文开放数据库_4个开放资源来发现古英语文学
  7. 【176期】面试官:MYSQL 表数据 delete 删除后,为何还占用存储空间?
  8. 知识点整理,Java基础面试题(一)
  9. 朋友圈加粗字体数字_独家:微信更新!公众号改版,朋友圈视频号直播置顶支持一键关闭...
  10. Web初学-2022.12.03-12.09