目录

课前先导

一、定义

二、声明二维数组

三、二维数组的初始化和赋值

四、遍历二维数组

五、用Arrays类中的方法输出数组


课前先导

二维数组及就是数组的嵌套,数组的元素还是数组;多维数组也是数组的嵌套,我们就用我们前面教的思想,一步一步来,我们一层一层剥开它。

一、定义

(1)二维数组是一个元素为一维数组的一维数组;

(2)从语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组。或者说,从表面上是多维数组,实质上都是一维数组;

(3)Java中操作多位数组的语法与一维数组类似。在实际应用中,三维以上的数组很少使用,主要使用二维数组。

二、声明二维数组

首先,我们先来看代码,用以为数组组成二维数组

先看一维数组,我们定义三个数组来存三个班各五名学生的身高,然后求每个班的平均身高

public static void main(String[] args){double[] height01 = {156,162,180,178,169};double[] height02 = {162,186,190,171,175};double[] height03 = {159,178,184,168,173};double sum01 = 0,sum02 = 0,sum03 = 0; //身高和double avge01 = 0,avge02 = 0,avge03 = 0;//平均身高//求每个班的平均身高//先求每个班级的总身高//除以数组长度for(int i = 0;i < height01.length;i++){ //第一个班级的平均身高sum01 += height01[i];}avge01 = sum01/height01.length;System.out.println("第一个班级的平均身高是:"+avge01);for(int x = 0;x < height02.length;x++){ //第二个班级的平均身高sum02 += height02[x];}avge02 = sum02/height02.length;System.out.println("第二个班级的平均身高是:"+avge02);for(int y = 0;y < height03.length;y++){ //第三个班级的平均身高sum03 += height03[y];}avge03 = sum03/height03.length;System.out.println("第三个班级的平均身高是:"+avge03);}

我们看上面的代码,我们操作了三个一维数组,写了三个for循环,代码非常的多,作为程序员就会要把繁琐的事情简单化,我们把它改成一个二维数组。

声明二维数组:

数据类型[][] 数组名

数据类型 数组名[][]

* 数据类型为数组元素的类型

“[][]”用于表明定义了一个二维数组,通过多个下标进行数据访问

“数组名[下标]”表示二维数组里的一个元素,这个元素还是一个一维数组

“数组名[下标][下标]”表示二维数组里的一个元素(一维数组)里的一个元素

三、二维数组的初始化和赋值

二维数组中有两个"[]",第一个"[]"代表二维数组的长度,第二个"[]"代表二维数组中的元素一维数组的长度,所以我们声明二维数组的时候第一个“[]”中一定要有定义,当二维数组中每个一维数组的长度相同时,第二个“[]”才可定义不定义。

我们还按我们的案例来

(1)二维数组的长度已知,且二维数组的元素一维数组的长度都相等

数据类型[][] 数组名 = new 数据类型[二维数组的长度][一维数组的长度];
public static void main(String[] args){double[][] height = new double[3][5];height[0][0] = 156;height[0][1] = 162;height[0][2] = 180;height[0][3] = 178;height[0][4] = 169;height[1][0] = 162;height[1][1] = 186;height[1][2] = 190;height[1][3] = 171;height[1][4] = 175;height[2][0] = 159;height[2][1] = 178;height[2][2] = 184;height[2][3] = 168;height[2][4] = 173;}

(2)二维数组的长度已知,一维数组的长度未知

数据类型[][] 数组名 = new 数据类型[二维数组的长度][];数组名[二维数组下标] = new 数据类型[一维数组长度];
数组名[二维数组下标] = new 数据类型[一维数组长度];
数组名[二维数组下标] = new 数据类型[一维数组长度];
数组名[二维数组下标] = new 数据类型[一维数组长度];....................
public static void main(String[] args){double[][] height = new double[3][];height[0] = new double[5];//指定二维数组中的元素一维数组的长度height[1] = new double[5];height[2] = new double[5];height[0][0] = 156;height[0][1] = 162;height[0][2] = 180;height[0][3] = 178;height[0][4] = 169;height[1][0] = 162;height[1][1] = 186;height[1][2] = 190;height[1][3] = 171;height[1][4] = 175;height[2][0] = 159;height[2][1] = 178;height[2][2] = 184;height[2][3] = 168;height[2][4] = 173;}

(3)二维数组声明、分配空间、赋值合并写

数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,···,元素n},...,{元素1,元素2,···,元素n}}; 
 public static void main(String[] args){double[][] height = new double[][]{{156,162,180,178,169},{162,186,190,171,175},{159,178,184,168,173}};}

(4)二维数组声明、分配空间、赋值合并写的简写方式

数据类型[][] 数组名 = {{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据k}};
public static void main(String[] args){double[][] height = {{156,162,180,178,169},{162,186,190,171,175},{159,178,184,168,173}};}

四、遍历二维数组

遍历二维数组我们要用到双重for循环,外面一层循环二维数组的元素,里面一层循环一维数组的元素

public static void main(String[] args){double[][] height = {{156,162,180,178,169},{162,186,190,171,175},{159,178,184,168,173}};for(int i = 0;i < height.length;i++){for(int j = 0;j < height[i].length;j++){System.out.print(height[i][j]+"\t");}System.out.println();}}

五、用Arrays类中的方法输出数组

我们在前面学习了Arrays类中的方法来操作数组,那么Arrays类中的方法能不能在二维数组中用呢?

我们用Arrays类中的toString方法来打印二维数组

public static void main(String[] args){double[][] height = {{156,162,180,178,169},{162,186,190,171,175},{159,178,184,168,173}};System.out.println(Arrays.toString(height));}

成功了!但没完全成功,打印的是一维数组的地址值,因为,直接打印一维数组,打印的是个一维数组的地址值

我们把它变一下打印一维数组

public static void main(String[] args){double[][] height = {{156,162,180,178,169},{162,186,190,171,175},{159,178,184,168,173}};for(int i = 0;i < height.length;i++){System.out.println(Arrays.toString(height[i]));}}

成功了,完全成功了!

二维数组我们要用到的知识不多,会用这些就够了,需要的小伙伴可以往深的钻研。好了,今天的学习就到这了,我是一米八、有腹肌、低于半小时你报警的Loveletter,觉得内容不错的小伙伴可以点点关注,我们下篇博文见,再见!

15、Java基础——二维数组相关推荐

  1. Java基础--二维数组

    1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...

  2. java基础---二维数组方面的一些小编程

    package com.ujiuye.two; /*** @author limengdong* @date 2019年7月16日* @classroom 208bigdata* @descripti ...

  3. Java基础二维数组

    关于java中的二维数组 1.二维数组其实是一个特殊的一维数组,特殊在这个一维数组当中的每个元素是一个一维数组 2.三维数组是什么? 三维数组是一个特殊的二维数组,特殊在这个二维数组中每个元素是一个一 ...

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

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

  5. java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...

    一.Arrays jdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作.例如快速输出.排序.查找等. 1.数组的常用方法 1.数组以字符串形式的输出,2.sort对数组排序 ...

  6. java语言二维数组转置_java实现二维数组转置的方法示例

    本文实例讲述了java实现二维数组转置的方法.分享给大家供大家参考,具体如下: 这里在文件中创建Test2.Exchange.Out三个类 在Exchange类中编写exchange()方法,在方法中 ...

  7. java arraycopy二维数组_System.arraycopy()实现数组的复制与交换

    今天在读别人代码的时候,发现了一个数组之间复制很不错的方法,就分享记录下吧.同时小小的研究下了它的使用方法. System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制. ...

  8. java txt 二维数组_java 将一个二维数组存到txt文件里,然后再读取

    java 将一个二维数组存到txt文件里,然后再读取 mip版  关注:286  答案:3  悬赏:30 解决时间 2021-01-26 21:40 已解决 2021-01-26 04:05 将一个d ...

  9. java获取二维数组长度

    java获取二维数组长度 二维数组定义:int array[][] = new int[3][4]; 获取行数: int rowLength = array.length;//3 获取列数: int ...

最新文章

  1. Sencha Touch 2 DataView / List 分页
  2. UIView 的布局与绘制显示相关方法调用时机
  3. php chilkat.certstore,angularjs实现冒泡排序算法的可视化
  4. 图论(十)最小生成树-Prim算法
  5. 神策 FM |「聚焦」细分市场是独角兽诞生的营销关键
  6. boost::gil::threshold_truncate用法的测试程序
  7. 算法系列教程04 - 算法相关的基础概念
  8. 库卡机器人CELL程序解析
  9. python中定义结构体
  10. ASP.NET Core和Angular 2双剑合璧
  11. 【BZOJ3083】遥远的国度,树链剖分练习
  12. python能自学成功吗-python能够自学吗
  13. C#(winform)为button添加背景图片,并去掉各种边框
  14. C语言例题——简易秒表
  15. 【转】打造个性化ghostxp光盘另类教程(3)
  16. 网络流 24 题, 餐巾计划问题 (最小费用流 )
  17. 阿里2019实习生面经
  18. 十条网站盈利模式分析总结
  19. 信噪比(一些概念,公式推导,实验分析)
  20. Games101-课程20笔记

热门文章

  1. FileMaker Pro 19 Advanced for mac(数据库工具)
  2. 改变图纸中的剪短符号
  3. 小程序直播 人数多服务器卡,小程序直播在线人数增长缓慢怎么办
  4. 【转】迈拓维距Type-C转HDMI+USB+PD转接头手机连接电视图文教程疑难解答
  5. 鸿蒙系统包括8x吗,华为荣耀8X可以升级鸿蒙系统吗?
  6. 记录四图像处理之瘦脸 MLS算法 C++实现
  7. Visual studio无法打开C#\.sln文件,不兼容
  8. Linux平台环境搭建
  9. 【项目】简易http服务器流程图分析
  10. rampart 概述