15、Java基础——二维数组
目录
课前先导
一、定义
二、声明二维数组
三、二维数组的初始化和赋值
四、遍历二维数组
五、用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基础——二维数组相关推荐
- Java基础--二维数组
1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...
- java基础---二维数组方面的一些小编程
package com.ujiuye.two; /*** @author limengdong* @date 2019年7月16日* @classroom 208bigdata* @descripti ...
- Java基础二维数组
关于java中的二维数组 1.二维数组其实是一个特殊的一维数组,特殊在这个一维数组当中的每个元素是一个一维数组 2.三维数组是什么? 三维数组是一个特殊的二维数组,特殊在这个二维数组中每个元素是一个一 ...
- java二维数组杨辉三角_实验----Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...
一.Arrays jdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作.例如快速输出.排序.查找等. 1.数组的常用方法 1.数组以字符串形式的输出,2.sort对数组排序 ...
- java语言二维数组转置_java实现二维数组转置的方法示例
本文实例讲述了java实现二维数组转置的方法.分享给大家供大家参考,具体如下: 这里在文件中创建Test2.Exchange.Out三个类 在Exchange类中编写exchange()方法,在方法中 ...
- java arraycopy二维数组_System.arraycopy()实现数组的复制与交换
今天在读别人代码的时候,发现了一个数组之间复制很不错的方法,就分享记录下吧.同时小小的研究下了它的使用方法. System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制. ...
- java txt 二维数组_java 将一个二维数组存到txt文件里,然后再读取
java 将一个二维数组存到txt文件里,然后再读取 mip版 关注:286 答案:3 悬赏:30 解决时间 2021-01-26 21:40 已解决 2021-01-26 04:05 将一个d ...
- java获取二维数组长度
java获取二维数组长度 二维数组定义:int array[][] = new int[3][4]; 获取行数: int rowLength = array.length;//3 获取列数: int ...
最新文章
- Sencha Touch 2 DataView / List 分页
- UIView 的布局与绘制显示相关方法调用时机
- php chilkat.certstore,angularjs实现冒泡排序算法的可视化
- 图论(十)最小生成树-Prim算法
- 神策 FM |「聚焦」细分市场是独角兽诞生的营销关键
- boost::gil::threshold_truncate用法的测试程序
- 算法系列教程04 - 算法相关的基础概念
- 库卡机器人CELL程序解析
- python中定义结构体
- ASP.NET Core和Angular 2双剑合璧
- 【BZOJ3083】遥远的国度,树链剖分练习
- python能自学成功吗-python能够自学吗
- C#(winform)为button添加背景图片,并去掉各种边框
- C语言例题——简易秒表
- 【转】打造个性化ghostxp光盘另类教程(3)
- 网络流 24 题, 餐巾计划问题 (最小费用流 )
- 阿里2019实习生面经
- 十条网站盈利模式分析总结
- 信噪比(一些概念,公式推导,实验分析)
- Games101-课程20笔记
热门文章
- FileMaker Pro 19 Advanced for mac(数据库工具)
- 改变图纸中的剪短符号
- 小程序直播 人数多服务器卡,小程序直播在线人数增长缓慢怎么办
- 【转】迈拓维距Type-C转HDMI+USB+PD转接头手机连接电视图文教程疑难解答
- 鸿蒙系统包括8x吗,华为荣耀8X可以升级鸿蒙系统吗?
- 记录四图像处理之瘦脸 MLS算法 C++实现
- Visual studio无法打开C#\.sln文件,不兼容
- Linux平台环境搭建
- 【项目】简易http服务器流程图分析
- rampart 概述