二维数组的使用

news/2025/1/5 23:12:41/文章来源:https://www.cnblogs.com/sylaaa/p/18651299

1.二位数组的理解
Java 语言里提供了支持多维数组的语法

如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像右图Excel中的表格一样。

对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组。

二维数组:数组中的数组。

2.二维数组的声明方式

int[][] arr;
//这样也是正确的 但是不推荐
// int arr[][];
// int[] arr[];

3.二维数组的初始化
(1)格式1(动态初始化)

	int[][] arr1 = new int[3][2];
  • 定义了名称为arr的二维数组
  • 二维数组中有3个一维数组
  • 每一个一维数组中有2个元素
  • 一维数组的名称分别为arr[0], arr[1], arr[2]
  • 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

(2)格式2(动态初始化)
int[][] arr = new int[3][];

  • 二维数组中有3个一维数组。
  • 每个一维数组都是默认初始化值null (注意:区别于格式1)
  • 可以对这个三个一维数组分别进行初始化
    arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];
  • 注:
    int[][]arr = new int[][3]; //非法
    (3)格式三(静态初始化)
	int[][] arr3 = new int[][]{{3,8,2},{2,7},{9,0,1,6}}
  • 定义一个名称为arr的二维数组,二维数组中有三个一维数组
  • 每一个一维数组中具体元素也都已初始化
  • 第一个一维数组 arr[0] = {3,8,2};
  • 第二个一维数组 arr[1] = {2,7};
  • 第三个一维数组 arr[2] = {9,0,1,6};
  • 第三个一维数组的长度表示方式:arr[2].length;
  • 注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。
  • Java中多维数组不必都是规则矩阵形式
	1.初始化//静态初始化int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8}};//动态初始化1int[][] arr2 = new int[3][2];//动态初始化2int[][] arr3 = new int[3][];//这样也是正确的 但是不推荐//        int arr4[][];//        int[] arr4[];2.如何调用数组指定位置的元素System.out.println(arr1[0][1]);//2System.out.println(arr2[1][1]);//0arr6[1] = new int[2];System.out.println(arr6[1][1]);//03.获取数组的长度System.out.println(arr1.length);//3System.out.println(arr1[0].length);//3System.out.println(arr1[1].length);//34.如何遍历二维数组for(int i = 0; i < arr1.length; i++){for (int j = 0; j < arr1[i].length; j++){System.out.print(arr1[i][j] + " ");}System.out.println();}

4.数组元素的默认初始值

	//5、数组元素的默认初始化值//int类型int[][] arr = new int[3][];System.out.println(arr[0]);// null// System.out.println(arr[0][0]); //NullPointerExceptionSystem.out.println(arr); //[[I@1b6d3586int[][] arr1 = new int[3][4];System.out.println(arr1[0]);// [I@1b6d3586 地址值System.out.println(arr1[0][0]); //0System.out.println(arr1); //[[I@74a14482//float类型float[][] arr3 = new float[3][4];System.out.println(arr3[0]);// [F@1540e19d 地址值System.out.println(arr3[0][0]); //0.0//String类型String[][] arr4 = new String[3][4];System.out.println(arr4[0]);// [Ljava.lang.String;@677327b6 地址值System.out.println(arr4[0][0]); //null

5.二维数组的内存解析

   int[][] arr1 = new int[4][];arr1[1] = new int[]{1,2,3};arr1[2] = new int[4];
arr1[2][1] = 30;

image

6.二维数组的练习
练习1

	public class Array2Test1 {public static void main(String[] args) {//1、练习1 计算数组中所有元素的和int[][] arr = {{3,5,8},{12,9},{7,0,6,4}};int sum = 0;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {sum += arr[i][j];}}System.out.println("sum = " + sum);}}

练习2

	import java.util.Random;public class Array2Test2 {public static void main(String[] args) {//输入几 就打印几行几列 如:/*1 2 34 5 67 8 9*/int num = 3;for (int i = 1; i <= num; i++){for (int j = num * i - num + 1; j < num * i + 1; j++){System.out.print(j + " ");}System.out.println();}System.out.println();/*定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。要求:所有随机数都是两位数。*/int[] arr = new int[10];//给数组赋值for (int i = 0; i < arr.length; i++){arr[i]= (int)(Math.random() * 90 + 10);}int max;//最大值int min;//最小值int sum = 0;//和值double average;//平均值max = min = arr[0];for (int i = 0; i < arr.length; i++){//获取最大值if (max < arr[i]){max = arr[i];}//获取最小值if (min > arr[i]){min = arr[i];}sum += arr[i];}average = sum / (double)arr.length;for (int i = 0; i < arr.length; i++){System.out.print(arr[i] + " ");}System.out.println();System.out.println("最大值:" + max);System.out.println("最小值:" + min);System.out.println("和值:" + sum);System.out.println("平均值:" + average);}}

练习3

	//输入几 就打印几行几列 如:/*1 2 34 5 67 8 9*/int num = 3;for (int i = 1; i <= num; i++){for (int j = num * i - num + 1; j < num * i + 1; j++){System.out.print(j + " ");}System.out.println();}System.out.println();/*定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。要求:所有随机数都是两位数。*/int[] arr = new int[10];//给数组赋值for (int i = 0; i < arr.length; i++){arr[i]= (int)(Math.random() * 90 + 10);}int max;//最大值int min;//最小值int sum = 0;//和值double average;//平均值max = min = arr[0];for (int i = 0; i < arr.length; i++){//获取最大值if (max < arr[i]){max = arr[i];}//获取最小值if (min > arr[i]){min = arr[i];}sum += arr[i];}average = sum / (double)arr.length;for (int i = 0; i < arr.length; i++){System.out.print(arr[i] + " ");}System.out.println();System.out.println("最大值:" + max);System.out.println("最小值:" + min);System.out.println("和值:" + sum);System.out.println("平均值:" + average);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863649.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

https申请+部署

1.申请参考:https://developer.aliyun.com/article/1635083 自动就行。 2.成功后会下载到两个文件。一个.poe 一个.key 部署 1.在/etc/nginx/conf.d里面新建一个文件夹cert,然后把这两个文件放进去。2.返回到nginx.conf里面配置, 这是原来的 server{listen 80;serve…

使用 SK Plugin 给 LLM 添加能力

前几篇我们介绍了如何使用 SK + ollama 跟 LLM 进行基本的对话。如果只是对话的话其实不用什么 SK 也是可以的。今天让我们给 LLM 整点活,让它真的给我们干点啥。 What is Plugin?Plugins are a key component of Semantic Kernel. If you have already used plugins from Ch…

FreeNAS 11.2-U6 简易上手指南

NAS是一个网络附属存储管理器,简单的可以理解为一个可以将数据存储至网络设备的服务。 NAS一般都会支持数据冗余、日志、压缩以及校验等功能。 国内最出名的应该就是群晖的系统了,当然我们这里主要讲解的是FreeNAS。 FreeNAS是一个基于FreeBSD进行二次开发的开源NAS系统,其支…

WhyNotWin11(win11检测工具)

微软官方Windows11检测工具写的太烂,第三方作者开发了一个,软件给每一项都标注了功能,通过了显示绿色,没通过显示红色。Windows目前不支持6、7代处理器。另外,主板不支持加密TPM2.0加密的也不行,不过这个TPM加密,估计后面会妥协,哦不,所有的都会妥协。获取地址:https…

vue基础语法

1、插值语法 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>插值语法</title><script src="../vu/js/vue.js"></script> </head> <body><!--插值语法示…

Luogu P4287 SHOI2011 双倍回文 题解 [ 紫 ] [ manacher ]

manacher 经典结论。双倍回文:回文子串结论的经典应用。 结论 先放本题最关键的结论:一个字符串本质不同的回文子串最多只有 \(n\) 个。 考虑如何证明: 假设我们一个一个地在当前字符串(黑色部分)的结尾加入字符(红色部分),那么会出现如下情况:显然,加入红色字符后,…

傲梅轻松备份(系统备份还原)v7.4.1 技术师增强版

傲梅轻松备份是由傲梅官方推出的电脑上一键备份系统工具,有着业界最快的备份速度,能够瞬间将电脑上的系统备份下来,方便用户下次系统一键还原。傲梅轻松备份专业版专业解决用户的备份系统不会、磁盘备份不会、文件备份太麻烦等等各种问题,简化了整个备份的流程,加快了备份…

Python多分类Logistic回归详解与实践

在机器学习中,Logistic回归是一种基本但非常有效的分类算法。它不仅可以用于二分类问题,还可以扩展应用于多分类问题。本文将详细介绍如何使用Python实现一个多分类的Logistic回归模型,并给出详细的代码示例。在机器学习中,Logistic回归是一种基本但非常有效的分类算法。它…

【STC8H】STC8 系列单片机低功耗延时方法

STC8 单片机低功耗延时方法 单片机延时通常方法就是跑while循环,但在低功耗要求下可以利用定时唤醒方式使MCU在延时期间睡眠,降低功耗。以STC8G1K08为例: 寄存器 WKTCH^8为使能,其余15位用于控制唤醒时间。并且在唤醒后系统会继续从掉电语句的下一句执行。延时计算 按照公式…

C盘注册表优化清理工具!Wise Registry Cleaner v11.1.9.724

Wise Registry Cleaner是一款优化电脑性能的软件,通过清理注册表中的无效和过时信息来提升计算机运行速度。它能快速扫描并安全清理垃圾文件,同时优化PC。软件具备一键撤销更改和注册表备份功能,确保操作安全。最新版本改进了清理规则,增加了优化项目,并解决了特定软件兼容…

winrar(解压工具-含电脑版和手机版)

winrar,全球使用人数最多解压工具 winrar 烈火汉化无广告版(含电脑版和手机版),一款在官方原版的基础上注册破/解winrar64位去广告版,安装即可使用,不需要使用注册码及key文件,非常简单易用,欢迎有需要的朋友们前来下载使用。另:程序容易被杀毒软件误报,但亲测无毒可…

JVM实战—9.线上FGC的几种案例

大纲 1.如何优化每秒十万QPS的社交APP的JVM性能(增加S区大小 + 优化内存碎片) 2.如何对垂直电商APP后台系统的FGC进行深度优化(定制JVM参数模版) 3.不合理设置JVM参数可能导致频繁FGC(优化反射的软引用被每次YGC回收) 4.线上系统每天数十次FGC导致频繁卡顿的优化(大对象问题) 5…