【Java】数组操作 之 多维数组

news/2024/11/25 16:25:17/

一、二维数组

二维数组就是数组的数组。定义一个二维数组如下:

public class Main {public static void main(String[] args) {int[][] ns = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 }};System.out.println(ns.length); // 3}
}

因为ns包含3个数组,因此,ns.length为3。实际上ns在内存中的结构如下:

在这里插入图片描述
如果我们定义一个普通数组arr0,然后把ns[0]赋值给它:

public class Main {public static void main(String[] args) {int[][] ns = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 }};int[] arr0 = ns[0];System.out.println(arr0.length); // 4}
}

实际上arr0就获取了ns数组的第0个元素。因为ns数组的每个元素也是一个数组,因此,arr0指向的数组就是{ 1, 2, 3, 4 }。在内存中,结构如下:
在这里插入图片描述
访问二维数组的某个元素需要使用array[row][col],例如:

System.out.println(ns[1][2]); // 7

二维数组的每个数组元素的长度并不要求相同,例如,可以这么定义ns数组:

int[][] ns = {{ 1, 2, 3, 4 },{ 5, 6 },{ 7, 8, 9 }
};

这个二维数组在内存中的结构如下:

在这里插入图片描述
要打印一个二维数组,可以使用两层嵌套的for循环:

for (int[] arr : ns) {for (int n : arr) {System.out.print(n);System.out.print(', ');}System.out.println();
}

或者使用Java标准库的Arrays.deepToString():

import java.util.Arrays;public class Main {public static void main(String[] args) {int[][] ns = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 }};System.out.println(Arrays.deepToString(ns));}
}

二、三维数组

int[][][] ns = {{{1, 2, 3},{4, 5, 6},{7, 8, 9}},{{10, 11},{12, 13}},{{14, 15, 16},{17, 18}}
};

它在内存中的结构如下:
在这里插入图片描述
如果我们要访问三维数组的某个元素,例如,ns[2][0][1],只需要顺着定位找到对应的最终元素15即可。

理论上,我们可以定义任意的N维数组。但在实际应用中,除了二维数组在某些时候还能用得上,更高维度的数组很少使用。

三、小结

二维数组就是数组的数组,三维数组就是二维数组的数组;

多维数组的每个数组元素长度都不要求相同;

打印多维数组可以使用Arrays.deepToString();

最常见的多维数组是二维数组,访问二维数组的一个元素使用array[row][col]。


http://www.ppmy.cn/news/819353.html

相关文章

day19三数之和 int *returnSize,int ** returnColumnSizes的理解

题目描述 *1.关于参数 int returnSize, int ** returnColumnSizes的理解 具体看这篇文章 [https://blog.csdn.net/m0_52775920/article/details/121461911?spm1001.2014.3001.5502] (1)*returnSize 的理解 returnSize 返回大小为returnSize的二维数组&…

域成员服务器如何使用本地账号登陆远程桌面

本文地址:http://www.lookmypc.com/news/20160919212013.shtml,转载请注明。 域成员服务器如何使用本地账号登陆 远程桌面 ?如果与加入域的服务器WindowsServer2008R2开启 远程桌面 ,在本地使用远程桌面连接自己的IP地址,输入…

云服务器远程访问安全策略

前段时间买了一个腾讯云的服务器,在服务器上面安装了一个MariaDB数据库通过Navicat进行远程连接,但是后来我发现我的数据库被删除了。我是启动项目的时候提示没找到数据库,所以看了一下被别人删除了。留下了勒索信息。   因此大家在云服务…

远程访问协议

下载 第17章远程访问协议 作者:Mark Kadrich 本章内容包括: • 远程互联 • 远程认证拨入用户服务( R A D I U S ) • 使用S L I P、C S L I P和P P P传送I P报文 • 隧道远程访问 随着I n t e r n e t的增长,需要从任何位置访问I n …

Redis远程访问

1.Redis绑定的主机地址是本地 需要进入配置文件进行修改 [rootVM_0_16_centos ~]# vim /usr/local/redis/redis.conf 注释掉bind 127.0.0.1 #bind 127.0.0.1 或者 bind 0.0.0.0更改protected-mode yes为 protected-mode no 更改daemonize no为 daemonize yes设置密码 requirep…

远程访问OPC SERVER DCOM的配置

OPC技术论坛 http://www.opc-china.com OPC服务器,客户程序技术讨论一、在装有OPC服务器的机器上DCOM配置如下 1. 运行服务器上的dcomcnfg程序,进行DCOM配置。 2. 进入DCOM的总体默认属性页面,将“在这台计算机上启用分布式COM”打上勾&#…

远程访问服务

1.远程服务调用 远程服务调用(Remote Procedure Call,RPC)已经存在超过四十年(1990s DCE) 什么是RPC?如何评价某某RPC技术,RPC更好还是REST更好? RPC轮子:Google gRPC…

mstsc保存用户名和密码,实现自动登录远程桌面

mstsc保存用户名和密码,实现自动登录远程桌面 首先可以使用mstsc /?来查看关于mstsc的参数说明 根据上述的命令说明,我这里实现的bat文件为 mstsc C:/a.rdp /console /v: xxx.xxx.xxx.xxx:3389 a.rdp内容 screen mode id:i:1 desktopwidth:i:1280 des…