首页 > 编程语言 >Java 二维数组

Java 二维数组

时间:2023-12-26 16:12:45浏览次数:36  
标签:arr Java 数组 int 元素 二维 一维

二维数组:

  1. 二维数组的元素个数 = 二维数组中一维数组的个数 = arr.length;

  2. 二维数组的每个元素是一维数组,所以如果需要得到每个一维数组中的元素,还需要再遍历一维数组;

  3. arr[i][j]表示:二维数组的第 i+1 个一维数组的第 j+1 个元素;

二维数组的初始化:

 1.静态初始化 

定义数组并同时为数组中的所有元素赋值:数据类型[][] 数组名 = {{值1, 值2, ..}, {值1, 值2, ..}, {值1, 值2, ..}};

举例:int[][] arr = {{1, 1, 1}, {8, 8, 9}, {10}};
注意:二维数组的每个元素必须是一维数组,不允许是其他数据类型;每个一维数组中的元素个数可以相等或不相等。上例中,第1个一维数组有 3 个元素,第2个一维数组有 3 个元素,而第三个一维数组只有 1 个元素。

int[][] arr = {{1, 1, 1}, {8, 8, 9}, {10}};
				
// 遍历二维数组中的每个元素(一维数组) 		
for(int i = 0; i < arr.length; i++) {
	// 1. arr[i] 表示:二维数组的第 i+1 个一维数组。比如 arr[0]:二维数组的第一个一维数组 
	// 2. arr[i].length 得到对应的每个一维数组的长度 
	for(int j = 0; j < arr[i].length; j++) { 
		// 输出二维数组中的一维数组中的每一个元素
		System.out.print(arr[i][j] + " ");  
	}
	System.out.println();// 换行 
} 

  

2.动态初始化:

第一种方式(列数确定)
基本语法:

先定义数组:数据类型[][] 数组名 = new 数据类型[数组大小][数组大小];

举例: int arr[][] = new int[2][3];
再给一维数组中的每个元素赋值,若不赋值,则为定义的数据类型的默认值。

这种初始化方式在声明二维数组的同时开辟了其所需要的堆内存空间,这种方式创建出的每一个一维数组的空间都是一样的(即二维数组的列数是一样的)。

 

// 定义一个二维数组,同时为数组开辟内存空间,此时二维数组的行数为3,列数为2。也就是我们所说的列数相同
int[][] arr = new int[3][2];
	
// 然后再遍历所有的一维数组,给其中的每个元素赋值。省略... 

  

第二种方式(列数确定)
基本语法:

先声明:数据类型[][] 数组名;。
再定义(开辟空间):数组名 = new 数据类型[数组大小][数组大小];。此时每个一维数组的内存空间都已经开辟。
最后给一维数组中的每个元素赋值,若不赋值,则为定义的数据类型的默认值。
第二种方式其实是和第一种方式大同小异的。第一种方式是在声明的同时定义;而第二中是先声明数组,后面需要用到的时候再定义。

int[][] arr;
arr = new int[3][2];

// 先声明一个二维数组
int[][] arr;
	
// 再为数组开辟内存空间,此时二维数组的行数为3,列数为2。也就是我们所说的列数相同
arr = new int[3][2];
	
// 最后再遍历所有的一维数组,给其中的每个元素赋值。省略... 

 

2.2.3 第三种方式(列数不确定)
基本语法:

先声明:数据类型[][] 数组名;。
再定义(开辟空间):数组名 = new 数据类型[数组大小][];。 注意:此时所有的一维数组都未开辟堆内存空间。
遍历二维数组,给一维数组开辟堆内存空间,此时给每个一维数组开辟的内存空间可以不相等(也就是说二维数组的列数是不一样的)。
最后给一维数组中的每个元素赋值。若不赋值,则为定义的数据类型的默认值。

// 定义二维数组。此时所有的一维数组还没有分配内存空间;arr[i]的地址为null;
int[][] arr = new int[3][];
	
// 遍历二维数组,给每个一维数据开辟内存空间。这种方式会使得每个一维数组的大小可以不一样
for (int i = 0; i < arr.length; i++) {
    // 给每个一维数组开辟空间,若没有这一步,一维数组的内存空间就是 null;
    arr[i] = new int[i + 1];    
}

// 最后再遍历所有的一维数组,给其中的每个元素赋值。省略... 

三:二维数组使用细节和注意事项

一维数组的声明方式有: int[] x 或者 int x[]。

二维数组的声明方式有: int[][] arr 或者 int[] arr[] 或者 int arr[][]。

二维数组实际上是由多个一维数组构成的,它的各个一维数组的内存大小可以相同,也可以不相同。

比如: map[][] 是 一个二维数组, int[][] map = {{1, 2}, {3, 4, 5}};其中,map[0] 是一个含有2个元素的一维数组 ,map[1] 是一个含有3个元素的一维数组,因此, map[][] 也称为 “列数不等的二维数组”。

标签:arr,Java,数组,int,元素,二维,一维
From: https://www.cnblogs.com/sixsix666/p/17928265.html

相关文章

  • java爬虫(jsoup)如何设置HTTP代理ip爬数据
    前言在Java中使用Jsoup进行网络爬虫操作时,有时需要使用HTTP代理IP来爬取数据。本文将介绍如何使用Jsoup设置HTTP代理IP进行爬取,并提供相关代码示例。什么是HTTP代理IPHTTP代理IP是一种允许我们通过代理服务器访问互联网的方式。一般情况下,我们访问网站时,直接使用自己的IP地址进行通......
  • 无涯教程-Java9 - JShell(REPL)
    REPL代表"Read-Eval-PrintLoop"。使用JShell,java具有REPL函数。使用REPL,无涯教程可以对基于Java的逻辑进行编码和测试,而无需使用javac进行编译,并且可以直接查看计算输出。运行JShell打开命令提示符,然后键入jshell。$jshell|WelcometoJShell--Version9-ea|Forani......
  • json 数组查找数据的几种方式,包括模糊查找
    来源:http://www.shanhubei.com/archives/3418.html在JavaScript中,有几种常见的方式可以用来查找JSON数组中的数据。下面介绍了其中的几种方式:1.使用find()方法:find()方法用于在数组中查找满足指定条件的第一个元素,并返回该元素。它接受一个回调函数作为参数,该回调函数会......
  • 操作对象数组
    1.将对象数组按照一定的数量进行切割  应用场景:列表前端分页,swiper翻页等  json数据如下:  constarr=[        {"name":"AAA","info":'01'},        {"name":"BBB","info":'02'}, ......
  • Java:hutool工具箱实现文件大小的友好输出
    文档https://doc.hutool.cn/基本使用依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.22</version></dependency>示例packagecom.example.demo;importorg......
  • ArcGIS API for JavaScript 4.x 免登录调用arcgis online私有服务
    APIkeys|ArcGISDevelopers 前言 本来以为普通用户调用服务只能依靠登录,仔细研究了一下可以通过key来实现免登录调用服务。背景最近在做一个BIM结合GIS的Demo,先通过arcgispro将.rvt文件配准到实际位置,然后打包成slpk文件,拖拽到arcgisonline发布出来,最后在前端加载。 ......
  • Java变量再次理解
    Java变量共分为三类,分别为成员变量,局部变量,静态变量希望这次可以理解的透彻并记住成员变量(也叫实例变量,对象变量):其实通俗理解就是当每个对象都想有自己的变量值时就是声明成员变量,比如班级里的每个人都有自己的name,我们创建类的时候声明的成员变量的名字是name,这样大家都有自......
  • JavaWeb笔记
    JavaWeb笔记Servlet什么Servlet?servlet是运行在Web服务器中的小型Java程序(即:服务器端的小应用程序)。servlet通常通过HTTP(超文本传输协议)接收和响应来自Web客户端的请求。编写一个servlet程序:a、写一个java类,实现servlet接口b、修改web.xml文件,给servlet提供一个可......
  • Java版Flink(一)概述和入门案例
    一、概述1、Flink是什么ApacheFlinkisaframeworkanddistributedprocessingengineforstatefulcomputationsoverunboundedandboundeddatastreams.ApacheFlink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。官网地址2、Flink特点......
  • Linux CentOS7安装chrome和chromedriver,用于Selenium爬虫(java代码演示)
    ......