Java学习笔记32——二维数组
二维数组
概述
二维阵列:
也就是说,元素是一维数组的数组。
示例:
二班
{ {小王、小李}、{小刘、小明}、{朱晓、肖伟}}
二维数组的定义格式
格式1
/*
数据类型[] []变量名=新数据类型[m][n];
左侧:
数据类型:表示最终元素的数据类型。
[] []:表示二维数组。
变量:二维数组的名称。
右:
New:表示为二维数组分配了内存空间。
[m]:表示这个二维数组中有元素,其中元素代表m个一维数组。
[n]:表示每个一维数组中有n个元素,元素的数据类型与定义的相同。
示例:int[][] arr=new int[3][2]
说明:表示定义了一个名为arr的二维数组,元素由三个一维数组组成,其中
每个一维数组中的元素数是2。
{{1,2},{3,4},{5,6}}
注意格式转换:
1.以后开发的时候,我们会按照我给的格式来定义,但是下面定义的格式是正确的。
A:数据类型变量名[][]=新数据类型[m][n];
B:数据类型[]变量名[]=新数据类型[m][n];
示例:int[][]arr=new int[2][3];(推荐第一种)
int arr[][]=new int[3][4];
int[]arr[]=new int[2][3];
*/
公共类Array2Demo1 {
公共静态void main(String[]args){ 0
//定义二维数组
int[][]arr=new int[3][2];
//3表示它由三个一维数组组成。
//2表示每个一维数组中的元素个数是2。
//根据前面的输出格式,我们输出名字。
system . out . println(arr);//[[I@4554617c //输出堆内存中二维数组的地址值。
system . out . println(arr[0]);//[I@74a14482 //输出是内存中第一个一维数组的地址值。
system . out . println(arr[1]);//[I@1540e19d //输出内存中第二个一维数组的地址值。
system . out . println(arr[2]);//[I@677327b6 //输出内存中第三个一维数组的地址值。
//从数组中获取元素的方法是通过索引获取。
system . out . println(arr[0][0]);//0 //输出第一个一维数组中第一个元素的值。
system . out . println(arr[0][1]);//0 //输出第一个一维数组中第二个元素的值。
//ArrayindexOutofBoundSexception : 2
//system . out . println(arr[0][2]);
//输出第三个一维数组的第二个元素值。
system . out . println(arr[2][1]);
}
}
格式2
/*
数据类型[] []变量名=新数据类型[m][];
左侧:
数据类型:表示最终元素的数据类型。
[] []:表示二维数组。
变量:二维数组的名称。
右:
新增:为二维数组打开堆内存空间。
数据类型:表示最终元素的数据类型,以及每个一维数组中元素的数据类型。
[m]:这个二维数据由m个一维数组组成。
[]:这里暂时将每个一维数组中的元素个数写死,以将来传入的一维数组元素个数而定
举例:
int[][] arr = new int[3][]
*/
public class Array2Demo2 {
public static void main(String[] args) {
//使用第二种格式定义一个二维数组
int[][] arr = new int[3][];
//表示的是定义了一个二维数组,由3个一维数组当作元素组成
//只不过每一个一维数组的元素个数没有定
System.out.println(arr); //输出的是二维数组本身的地址值
System.out.println(arr[0]); //输出的是二维数组中第一个一维数组的地址值 null
System.out.println(arr[1]); //输出的是二维数组中第二个一维数组的地址值 null
System.out.println(arr[2]); //输出的是二维数组中第三个一维数组的地址值 null
//java.lang.NullPointerException 空指针异常
// System.out.println(arr[0][0]);
//将二维数组中每一个元素添加一个一维数组
//初始化一个元素个数为2个的一维数组,赋值给二维数组中第一个元素
arr[0] = new int[2];
//初始化一个元素个数为3个的一维数组,赋值给二维数组中第二个元素
arr[1] = new int[3];
//初始化一个元素个数为4个的一维数组,赋值给二维数组中第三个元素
arr[2] = new int[4];
System.out.println(arr); //输出的是二维数组本身的地址值
System.out.println(arr[0]); //输出的是二维数组中第一个一维数组的地址值
System.out.println(arr[1]); //输出的是二维数组中第二个一维数组的地址值
System.out.println(arr[2]); //输出的是二维数组中第三个一维数组的地址值
//获取二维数组中第二个一维数组中的第1个元素
System.out.println(arr[1][0])
}
}
格式3
/*
二维数组定义的第三种格式:
格式3:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…},...};
左边:
数据类型:表示最终元素的数据类型
[][]:表示是一个二维数组
变量名:二维数组的名称
右边:
new:为二维数组在堆内存中开辟空间
数据类型:表示的是最终每个一维数组中元素的数据类型
[][]:表示的是一个二维数组
{{元素…},{元素…},{元素…},...}:
表示的是将来自定义多少个一维数组,以及每个一维数组中的元素个数也可以不一样
举例:
int[][] arr = new int[][]{{1,2},{11,22,33},{100,200,300},{10,20}};
表示的是定义一个二维数组,二维数组中的元素是由4个一维数组组成,
每个一维数组中的元素个数不一样。
有点类似于一维数组的静态初始化,前两个格式有点类似于一维数组的动态初始化。
简化格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…},...};
举例:
int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20}};
错误的格式:
不能和格式1,格式2混合使用
int[][] arr = new int[3][]{{1,2},{11,22,33},{100,200,300},{10,20}};
*/
public class Array2Demo3 {
public static void main(String[] args) {
//使用二维数组定义格式2定义
int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};
System.out.println(arr); //输出二维数组本身的地址值
System.out.println(arr[0]); //输出二维数组中第一个一维数组的地址值
System.out.println(arr[1]); //输出二维数组中第二个一维数组的地址值
System.out.println(arr[2]); //输出二维数组中第三个一维数组的地址值
System.out.println(arr[3]); //输出二维数组中第四个一维数组的地址值
//输出二维数组中第一个一维数组中的第一个元素值
System.out.println(arr[0][0]);
//输出二维数组中第一个一维数组中的第二个元素值
System.out.println(arr[0][1]);
//输出二维数组中第三个一维数组中的第一个元素值
System.out.println(arr[2][0]);
//输出二维数组中第四个一维数组中的第三个元素值
System.out.println(arr[3][2]);
}
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128323.html