快速学习Java的多维数组技巧
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!
前言
Java作为一门广泛应用于各行各业的开发语言,具有丰富的数据类型支持,其中多维数组是其重要的一种。多维数组可以更加方便地组织数据,提高Java应用程序的效率。本文将为大家介绍Java中多维数组的基本概念和常用操作,助力读者更好地掌握多维数组的使用技巧。
摘要
本文主要介绍Java中多维数组的概念、定义、初始化、访问、遍历等操作,通过实例展示多维数组在Java中的应用场景,以及其优缺点分析。
Java多维数组
简介
Java中的多维数组是指具有多个维度的数组,也就是数组中的每一个元素本身是一个数组。Java中可以定义二维数组、三维数组或者更高维度的数组。多维数组可以更直观地把数据组织成表格状或者立体状的数据结构,方便进行数据的操作和管理。
源代码解析
多维数组的定义
Java中多维数组的定义如下:
type [][] arrayRefVar; // 声明多维数组
type arrayRefVar[][]; // 声明多维数组
其中type表示数据类型,arrayRefVar表示数组名,这里定义了一个二维数组。
代码分析:
这两行代码都是声明一个二维数组,其中 type
表示数组元素的数据类型。不同之处在于第一行的 arrayRefVar
是一个数组变量的名称,第二行的 arrayRefVar
是一个数组的类型名。
通常情况下,第一种声明方式更常用,因为它更能直观地体现出数组变量的含义。同时,第二种声明方式需要在其他地方再定义数组变量,才能使用这个数组类型名。
多维数组的初始化
Java中多维数组的初始化有两种方式:
动态初始化
动态初始化可以指定每个维度的长度,例如:
int[][] array = new int[3][4]; // 定义一个3行4列的二维数组
代码分析:
此代码定义了一个名为array的二维数组,它有3行和4列。它可以存储int类型的数据。这意味着它有3个一维数组,每个一维数组中有4个元素。可以使用以下方式来访问二维数组的元素:
- array[0][0]代表第一个元素,它位于第一行第一列
- array[1][2]代表第七个元素,它位于第二行第三列
- array[2][3]代表第十二个元素,它位于第三行第四列
可以通过使用循环来遍历整个数组,例如:
for(int i=0; i<array.length; i++) {for(int j=0; j<array[i].length; j++) {System.out.print(array[i][j] + " ");}System.out.println();
}
这将打印出整个数组的内容。
静态初始化
静态初始化需要指定数组中每个元素的值,例如:
int[][] array = {{1,2,3},{4,5,6}}; // 定义一个二维数组并初始化
代码分析:
这段代码定义了一个名为array的二维数组,其包含两个一维数组,每个一维数组有三个元素。初始化的值为1、2、3、4、5、6。可以通过以下方式访问数组中的元素:
- array[0][0] = 1
- array[0][1] = 2
- array[0][2] = 3
- array[1][0] = 4
- array[1][1] = 5
- array[1][2] = 6
多维数组的访问
Java中多维数组的访问通过用方括号括起来的下标来实现,例如:
int[][] array = new int[3][4]; // 定义一个3行4列的二维数组
int val = array[1][2]; // 访问第2行第3列的元素
代码分析:
这段代码定义了一个3行4列的二维数组,即数组名为array,数组元素类型为int,其中第一个方括号[]表示数组的行数,第二个方括号[]表示数组的列数。然后,访问了该数组的第2行第3列的元素,并将其赋值给变量val。注意,二维数组的行和列都是从0开始计数的,因此array[1][2]表示的是第2行第3列的元素。
多维数组的遍历
Java中多维数组的遍历可以通过嵌套的for循环来实现,例如:
int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<array.length;i++){ // 外层循环控制行数for(int j=0;j<array[i].length;j++){ // 内层循环控制列数System.out.print(array[i][j]+" ");}System.out.println();
}
代码分析:
这段代码是一个嵌套循环,用于遍历一个二维数组并输出数组中的每一个元素。具体解释如下:
-
首先定义一个二维数组
array
,并初始化为一个 3x3 的矩阵。 -
外层循环
for(int i=0;i<array.length;i++)
控制行数,变量i
的初始值为 0,每次循环结束时i
的值增加 1,直到i
的值大于等于数组array
的行数为止。 -
内层循环
for(int j=0;j<array[i].length;j++)
控制列数,变量j
的初始值为 0,每次循环结束时j
的值增加 1,直到j
的值大于等于当前行数组array[i]
的列数为止。 -
循环体中使用
System.out.print
方法输出数组中的每一个元素,并用空格隔开。注意,这里使用的是array[i][j]
表示第i
行、第j
列位置上的元素。 -
每一行输出完毕后,内层循环结束,使用
System.out.println()
方法输出一个空行,换行符表示一行输出结束。 -
外层循环继续执行,重复执行步骤 3-5,直到输出完整个二维数组。
应用场景案例
多维数组在Java中的应用场景比较广泛,例如:
- 数独游戏:使用9X9的二维数组存储和操作数独游戏中的数字。
- 地图数据:使用多维数组存储和操作地图数据,例如游戏中的地图数据。
- 三维坐标系:使用三维数组处理三维坐标系的相关问题。
优缺点分析
Java中多维数组的优点:
- 可以直观地组织数据,方便数据的操作和管理。
- 可以更快地访问和操作数据,提高了程序的效率。
Java中多维数组的缺点:
- 多维数组容易造成内存浪费,因为Java中的多维数组是由多个一维数组组成的,每个一维数组都需要占用一定的内存空间。
- 多维数组的访问和操作比较复杂,需要嵌套的for循环实现。
类代码方法介绍
以下是一个二维数组的基本操作示例:
package com.example.javase.se.array;/*** @Author ms* @Date 2023-11-14 21:11*/
public class ArrayTest4 {public static void main(String[] args) {// 定义一个3行4列的二维数组int[][] array = new int[3][4];// 动态初始化二维数组array[0][0] = 1;array[0][1] = 2;array[0][2] = 3;array[0][3] = 4;array[1][0] = 5;array[1][1] = 6;array[1][2] = 7;array[1][3] = 8;array[2][0] = 9;array[2][1] = 10;array[2][2] = 11;array[2][3] = 12;// 遍历二维数组for(int i=0;i<array.length;i++){for(int j=0;j<array[i].length;j++){System.out.print(array[i][j]+"\t");}System.out.println();}}
}
测试结果
根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。
测试代码分析
根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。
这段代码定义了一个名为 ArrayTest4 的类,其中包含一个主方法 main。在 main 方法中,先定义了一个 3 行 4 列的二维数组 array,并且分别给每个位置赋值。然后使用嵌套循环遍历整个二维数组,并将每个位置的值打印出来。
具体来说,定义了一个 int 类型的二维数组 array,使用了动态初始化的方式,即在定义数组的同时为数组分配空间,并为数组的每个位置赋值。然后使用两个 for 循环遍历二维数组,外层循环用于遍历行,内层循环用于遍历列。在遍历的过程中,使用 System.out.print 方法打印每个位置的值,并在每行的结尾处使用 System.out.println 方法换行,从而保证输出结果按照二维数组的形式展现。
测试用例
以下是一个测试用例,测试了二维数组的定义、初始化、访问和遍历操作:
测试代码演示
package com.example.javase.se.array;/*** @Author ms* @Date 2023-11-14 21:11*/
public class ArrayTest4 {public static void main(String[] args) {int[][] array = new int[2][3]; // 定义一个2行3列的二维数组// 动态初始化二维数组array[0][0] = 1;array[0][1] = 2;array[0][2] = 3;array[1][0] = 4;array[1][1] = 5;array[1][2] = 6;// 访问二维数组中的元素int val = array[1][2];// 遍历二维数组for(int i=0;i<array.length;i++){for(int j=0;j<array[i].length;j++){System.out.print(array[i][j]+"\t");}System.out.println();}}
}
测试结果
根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。
测试代码分析
根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。
这段代码定义了一个二维数组 array ,它有 2 行和 3 列,即可以存储 2 * 3 = 6 个元素。
使用动态初始化,分别对数组中的每个元素进行赋值。
然后通过访问二维数组中的元素,获取了数组中第 2 行第 3 列的元素赋值给变量 val 。
最后通过嵌套循环遍历二维数组,将数组中的每个元素输出到控制台上。
全文小结
本文从多维数组的定义、初始化、访问、遍历等方面进行了详细的讲解,并通过实例展示了多维数组在Java中的应用场景。同时,本文也分析了多维数组的优缺点,帮助读者更好地理解多维数组的使用方法和使用注意事项。
总结
Java中的多维数组是一种方便数据组织和操作的数据类型,通过本文的介绍,相信读者已经可以掌握多维数组的基本概念和常用操作。同时,读者也需要注意多维数组的缺点,避免造成内存浪费和复杂的访问操作。
… …
文末
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
… …
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
相关文章:
快速学习Java的多维数组技巧
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…...
C语言运算类型有哪些
C语言中的运算类型主要分为以下几类: 1. 算术运算符: - 加法运算符 - 减法运算符 - - 乘法运算符 * - 除法运算符 / - 取模运算符 %(取余数) 2. 关系运算符: - 大于 > - 小于 < - 大…...
【深度学习】Loss为Nan的可能原因
文章目录 1. 问题情境2. 原因分析3. 导致Loss为Nan的其他可能原因 1. 问题情境 在某个网络架构下,我为某个数据项引入了一个损失函数。 这个数据项是nn.Embedding类型的,我加入的损失函数是对nn.Embedding空间做约束。 因为我在没加入优化loss前&#x…...
解密!考研数学满分学霸的备考书单
这题我太会了,高数视频有是有真的又臭又长,我也不喜欢看 但是自己看教材,有的地方又比较难以理解,所以,这个时候一本通俗易懂的教材就显得格外重要,国内很多教材都讲的晦涩难懂,所以我给大家推…...
AI绘画工具介绍
AI绘画工具是利用人工智能技术帮助用户创作艺术作品的软件或平台。它们通常通过用户输入的描述性文字,自动解析并生成具有特定风格和主题的画作。以下是一些2024年流行的AI绘画工具的介绍: GitMind AI绘画2:一个提供多种语言界面的AI绘画生成…...
【APP逆向】央视频播放量增加,逆向全过程解密
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
三星系统因何而成?或许是因为吞噬了第四颗恒星
相比于其他的类似星体,这个特殊的三星系统拥有更大更紧密的星体。 三星 天文学家发现了前所未见的三星系统。相比于其他典型的三星系统,这一三星系统拥有更大的体积,并且排列也更加紧密,这也使得这一系统更加特别。科学家推测&am…...
【MySQL】(基础篇六) —— 过滤数据
过滤数据 本文将讲授如何使用SELECT语句的WHERE子句指定搜索条件。 WHERE子句 数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或需要提取表数据的子集。只检索所需数据需要指定搜索条件(search criteria)&…...
利用 HTML5 Canvas 实现在线签字功能
目录 前言 一、HTML5 Canvas 简介 二、签字功能的实现 效果演示 完整代码 前言 在现代互联网应用中,有时我们需要让用户在网页上进行签字操作,比如确认文件、填写电子表格或者签署合同。利用 HTML5 的 canvas 画布,我们可以轻松地实现这一…...
GaussDB技术解读——GaussDB架构介绍(二)
上篇图文,从GaussDB关键架构目标、GaussDB分布式架构、数据计算路由层(Coordinator)关键技术方案等三方面对GaussDB架构进行了介绍。本篇将从数据持久化存取层(DataNode)关键技术方案、全局事务管理层(GTM)关键技术方案…...
EfficientNet详解
原论文名称:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 论文下载地址:https://arxiv.org/abs/1905.11946 原论文提供代码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet 自己…...
UI前端交互的艺术:探索设计的四个维度、五个层面、六个要点与七大原则
UI前端交互的艺术:探索设计的四个维度、五个层面、六个要点与七大原则 在数字时代的浪潮中,UI前端交互设计如同一门深邃的艺术,既需要技术支撑,又需要设计灵感。它关乎用户体验,影响着产品的成败。那么,UI…...
java接口设计需要考虑哪些方面
1.签名 目的:防止数据被篡改 (1)接口请求方将请求参数、时间戳和密钥拼接成一个字符串。 (2)使用MD5等hash算法生成签名。 (3)在请求参数或请求头中增加sign参数传递给API接口。 (4&…...
Opencv图像处理
Opencv图像处理 图像阈值处理 图像阈值的处理通过cv2.threshold函数来进行处理,该函数的具体说明如下所示 ret, dst cv2.threshold(src, thresh, maxval, type) src: 输入图,只能输入单通道图像,通常来说为灰度图 dst&#x…...
LeetCode | 2879.显示前三行
在 pandas 中,可以使用 head() 方法来读取 DataFrame 的前几行数据。如果想读取指定数量的行,可以在 head() 方法中传入一个参数 n,读取前 n 行 import pandas as pddef selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:retur…...
Qt实现简易播放器
效果如图 源码地址: 简易播放器: 基于Qt的简易播放器,底层采用VLC源码 - Gitee.com GitHub:GitHub - a-mo-xi-wei/easy-player: 基于Qt的调用VLC的API的简易播放器...
适配Android12启动页
今天我们讲个什么话题呢?我们今天讲的内容是,Android12新启动页的支持API。 启动页我想大家都不陌生吧,通常的写法就是先创建一个SplashActivity,在onCreate中 Handler(Looper.getMainLooper()).postDelayed({// 在这里跳转主界…...
人工智能在医学领域的应用及技术实现
欢迎来到 Papicatch的博客 目录 🍉引言 🍉 医学影像分析 🍈技术实现 🍍数据准备 🍍模型构建 🍍模型训练 🍍模型评估 🍍应用部署 🍈示例代码 🍉 基因…...
MySQL—多表查询—练习(1)
一、引言 上几篇关于多表查询的基本几个部分全部学习完了。 多表查询的基本类型的查询包括以下: 1、内连接(隐式内连接、显示内连接):... [INNER] JOIN ... ON 条件; ) 2、外连接(左外连接、右外连接&…...
千益畅行:合法合规的旅游卡服务,打破误解
近期,千益畅行旅游卡服务引起了公众的广泛关注。然而,一些人对该服务存在误解,认为其存在某种欺诈行为。但经过深入了解和全网搜索证据,我们可以确认,千益畅行实际上是一家合法合规的旅游卡服务提供商。 千益畅行旅游…...
【Echarts系列】水平柱状图
【Echarts系列】水平柱状图 序示例数据格式代码 序 为了节省后续开发学习成本,这个系列将记录我工作所用到的一些echarts图表。 示例 水平柱状图如图所示: 数据格式 data [{name: 于洪区,value: 2736},{name: 新民市,value: 2844},{name: 皇姑区,…...
怎样把便签里的内容移到桌面?桌面便签软件使用方法
每次打开电脑,我总是被满屏的文件和图标弄得眼花缭乱。那些记录在各式各样便签里的重要事项,经常被埋没在这信息的海洋中,找起来真是头疼。想必很多人都有过这样的困扰:如何在繁杂的桌面环境中,一眼就看到自己需要提醒…...
量化入门:qmt获取可转债基本信息和行情数据
💻专业版获取可转债数据 今天将展示如何使用Python和QMT来获取可转债的实时数据和财务数据。 🔬 获取可转债基本信息 迅投的券商版和基础版都不支持可转债行情,投研专业版才支持,一年大概5000元。免费的券商版可参考QMT量化入门 投研专业版才有权限调用download_cb_d…...
AVL树 ---(C++)
本篇讲全面的讲解 AVL 树的插入,旋转以及验证 AVL 树的性能(本篇未实现删除代码)。至于为什么会有 AVL 树,这是因为简单的二叉搜索树并不能直接的保证搜索的效率,因为当我们在二叉搜索树中插入一段有序的序列的时候&am…...
基于spring boot+MySQL 小区物业管理系统-计算机毕设 附源码37236
spring boot 小区物业管理系统 摘 要 在网络信息的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,小区物业只能以客户为导向,以产品的持续创新作为小区物…...
Linux/Ubuntu/Debian常用服务管理命令
Linux/Ubuntu/Debian常用服务管理命令 在 Linux 系统中,服务管理是系统管理员日常维护工作的重要组成部分。通过一些常用的命令,我们可以查看服务状态、启动或停止服务、重启服务等。掌握这些命令,可以让系统管理工作更加高效和便捷。 1. s…...
Maven的三种项目打包方式——pom,jar,war的区别
1、pom:用在父级工程或聚合工程中,用来做jar包的版本控制,必须指明这个聚合工程的打包方式为pom。 聚合工程只是用来帮助其他模块构建的工具,本身并没有实质的内容。具体每个工程代码的编写还是在生成的工程中去写。 对于在父工程…...
[手游] 三色绘恋S Mobile Link
语音合成TTS: 文字转成语音的工具 WPS免登录一键修改器: 去除烦人的登录且能正常使用 故事简介: 深秋的雨季即将到来,正值那个为人所熟知的故事发生的前一年—— 地点:湖北省的重点高中,武汉师贰高校。 新学年开始,各…...
nss刷题(4)
1、[SWPUCTF 2021 新生赛]easyrce <?php error_reporting(0); highlight_file(__FILE__); if(isset($_GET[url])) { eval($_GET[url]); } ?> if(isset($_GET[url])) isset函数用来检测url变量是否存在;$_GET函数获取变量数据 eval($_GET[url]); eval函数用…...
iOS调整collectionViewCell顺序
效果图 原理 就是设置collectionView调整顺序的代理方法,这里要注意一点 调整过代理方法之后,一定要修改数据源,否则导致错乱。 还有就是在collectionView上面添加一个长按手势,在长按手势的不同阶段,调用collectionV…...
找个建设网站的网管/全网搜索关键词查询
OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation) 本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持多租户和租户隔离 (multi-t…...
p2p网站建设的步骤过程/下拉关键词排名
零拷贝 零拷贝不是真的0次拷贝,而是减少拷贝次数,所有的零拷贝分为两个层面: (1)OS级别 传统IO: 硬盘->内核缓冲区->用户缓冲区->内核缓冲区->socket缓冲区-》socket缓冲区-》网卡…...
百色高端网站建设/优化大师的三大功能
目录知识点总结: Note: 1.创建一个/server/scripts目录,用于存放脚本(命令:mkdir -p /server/scripts) 2.安装软件时,安装路径统一为/usr/local/软件名-版本号 3.安装完软件后,需做软链接&#…...
手机网站有什么区别是什么/安卓在线视频嗅探app
input[type"file"]上传文件原理详解 最近又搞了一下上传文件功能,用别人的插件不大符合自己要求,还是用HTML5的input[type"file"]比较好控制,现在重新回顾一下使用input[type"file"]上传文件 【1】修改input…...
国贸做网站公司/如何制作网站
今天,说一Ipad充不了电,我想才没买好久,这么快电池就坏了呀。难道买到歪货了? 它的表现是充电线一接上去,电池指示有反应,也有"闪电"标志,就是充不进去电。本来想打客服的,…...
php 快速网站开发/怎样推广自己的产品
curator delete indices --index .marvel- --older-than 3 --time-unit days --timestring %Y.%m.%d3 /data0/wwwroot/elasticsearch-1.4.1/data/elasticsearch/nodes/0/indices转载于:https://blog.51cto.com/201438gz/1754170...