Java中二维数组的正确使用方法介绍

2023-05-30 0 4,872

目录

一. 多维数组

1. 概念

多维数组可以看成是数组的数组。 比如二维数组就是一个特殊的一维数组,它的每个元素都是一个一维数组。其他多维数组的概念,大家可以参照二维数组以此类推。

2. 分类

多维数组可以分为:

  • 二维数组;
  • 三维数组;
  • 其他数组;

其实我们在开发时,真正常用的数组也就是一维数组和二维数组,更多维度的数组很少使用。所以接下来在本篇文章中,主要是给大家讲解二维数组相关的内容。

二. 二维数组

1. 概念

二维数组就是一种数组的数组,其本质上还是一个一维数组,只是它的数据元素又是一个一维数组。 如果你对这个概念想象不出来,给大家举个栗子,相信吸烟的同学一下子就会明白。

一根烟 = 一个变量

一包烟 = 20根烟 = 一维数组

一条烟 = 10包烟 = 二维数组

也就是说,我们买的”一条烟“,就是一种”二维数组“,明白了吧?

2. 定义

定义二维数组的基本语法如下:

定义方式一:

元素类型[][] 数组名称;

定义方式二:

元素类型 数组名称[][];

在开发时,第一种定义方式更常用一些。这是数组的定义,我们还要对数组进行初始化。二维数组在初始化时,也分为动态初始化和静态初始化两种情况。我们可以把数组的定义和初始化在多条语句中分开完成,也可以直接放在一个语句中完成。

3. 初始化

3.1 动态初始化

二维数组进行动态初始化时,语法格式如下:

元素类型[][] 数组名称 = new 元素类型[二维数组的长度][一维数组的长度];

例如:

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

在上述示例中,表示我们定义了一个整型的二维数组arr。3表示在二维数组中有3个一维数组,每个一维数组就是一行;4表示每个一维数组中有4个数据元素,这样就形成了二维数组的4列。 这样我们就可以把这个二维数组arr看成是一个3行4列的数组或矩阵, 访问二维数组中的某个元素时,需要使用arr[row][col]的形式。所以二维数组中,总的元素个数最多有3*4=12个。

以下是动态初始化的案例代码。

/**
 * @author
 */
public class Demo15 {
    public static void main(String[] args) {
	// 二维数组--动态初始化

	//二维数组在动态初始化时,必须指定二维数组的长度。
        //创建一个包含了3个一维数组的二维数组,每个一维数组的长度是2。
        int[][] arr2 = new int[3][2];

        //给二维数组赋值
        //给二维数组中的第一个一维数组赋值
        arr2[0][0] = 111;
        arr2[0][1] = 222;

        //给二维数组中的第二个一维数组赋值
        arr2[1][0] = 333;
        arr2[1][1] = 444;

        //给二维数组中的第三个一维数组赋值
        arr2[2][0] = 555;
        arr2[2][1] = 666;

        //二维数组取值
        System.out.println( \"二维数组中第一个元素里的第一个元素\"+arr2[0][0]);
        System.out.println( \"二维数组中第一个元素里的第二个元素\"+arr2[0][1]);
        System.out.println( \"二维数组中第二个元素里的第一个元素\"+arr2[1][0]);
        System.out.println( \"二维数组中第二个元素里的第二个元素\"+arr2[1][1]);

        //获取二维数组的长度
        System.out.println(\"二维数组的长度\"+arr2.length);
        System.out.println(\"二维数组中第一个一维数组的长度\"+arr2[0].length);
        System.out.println(\"二维数组中第二个一维数组的长度\"+arr2[1].length);
        System.out.println(\"二维数组中第三个一维数组的长度\"+arr2[2].length);
    }
}

注意:我们在对二维数组进行动态初始化时,必须先指定出二维数组的长度,但一维数组的长度可以后续使用前再单独指定。

3.2 静态初始化

二维数组中,每个一维数组的长度并不要求相同,可以各不相同。 二维数组进行静态初始化时,语法格式如下:

元素类型[][] 数组名称 = new 元素类型[][]{{一维数组1,一维数组2,一维数组3....};

例如:

int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};

但是这种方式的语法显得有些啰嗦,所以在实际开发时,我们一般是采用简化的静态初始化方式,如下所示:

元素类型[][] 数组名称 =m{{一维数组1,一维数组2,一维数组3....};

例如:

int[][] arr = {{2,3},{5,2,1},{10,45,22,54}};

以下是静态初始化的案例代码。

/**
 * @author
 */
public class Demo16 {
    public static void main(String[] args) {
	// 二维数组--静态初始化

	//静态初始化一个二维数组。静态初始化时可以很灵活
	int[][] arr = {{11,22,33},{66,88}};
		
        //给二维数组赋值。
		//重新给二维数组中第一个一维数组里的第3个数据元素(即33)赋值,用99替换原来的33.
        arr[0][2] = 99;
        //重新给二维数组中第二个一维数组里的第1个数据元素(即66)赋值,用77替换原来的66.
        arr[1][0] = 77;
        
        //二维数组取值
        System.out.println( \"二维数组中第一个一维数组里的第一个元素\"+arr[0][0]);
        System.out.println( \"二维数组中第一个一维数组里的第二个元素\"+arr[0][1]);
        System.out.println( \"二维数组中第二个一维数组里的第三个元素\"+arr[0][2]);
        System.out.println( \"二维数组中第二个一维数组里的第一个元素\"+arr[1][0]);
        System.out.println( \"二维数组中第二个一维数组里的第二个元素\"+arr[1][1]);
        
        //获取二维数组的长度
        System.out.println(\"二维数组中的长度\"+arr.length);
        System.out.println(\"二维数组中第一个一维数组的长度\"+arr[0].length);
        System.out.println(\"二维数组中第二个一维数组的长度\"+arr[1].length);
    }
}

以上是定义和初始化二维数组的基本案例,为了加深大家对二维数组的理解,接下来再设计几个代码案例,巩固二维数组的用法。

4. 扩展案例

4.1 动态初始化的变形写法

如果我们在定义二维数组时,没有给定一维数组的长度,那么在使用数组之前,一定要先对一维数组进行初始化。 否则,此时如果直接使用一维数组,就会产生空指针异常java.lang.NullPointerException。

/**
 * @author
 */
public class Demo17 {
    public static void main(String[] args) {
	//动态初始化时未限定一维数组的长度
	int[][] arr = new int[3][];
		
	//如果我们在定义二维数组时,没有给定一维数组的长度,那么在使用数组之前,一定要初始化里面的一维数组。
	//否则,如果直接使用一维数组,就会产生空指针异常java.lang.NullPointerException
	// arr3[0][0] = 100;
	//初始化一维数组
	arr[0] = new int[2];
	arr[1] = new int[1];
	arr[2] = new int[4];

	//给数组赋值
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[1][0] = 10;
	arr[2][0] = 100;
	arr[2][1] = 200;
	arr[2][2] = 300;
	arr[2][3] = 400;

	// 二维数组取值
	System.out.println(\"二维数组中的第一个元素中的第一个元素\" + arr[0][0]);
	System.out.println(\"二维数组中的第一个元素中的第二个元素\" + arr[0][1]);
	System.out.println(\"二维数组中的第二个元素中的第一个元素\" + arr[1][0]);
    }
}

arr[0]=new int[2] 和 arr [1]=new int[1] 是在为最高维分配引用空间,也就是限制了最高维能保存数据的最大长度。

4.2 遍历二维数组

因为二维数组中包含若干个一维数组,我们之前遍历一维数组时要使用一个循环,所以我们对二维数组进行遍历时就要使用嵌套的双重循环。当然,for/while/foreach等循环都可以使用。

/**
 * @author 一一哥Sun 
 */
public class Demo18 {
    public static void main(String[] args) {
	// 二维数组--遍历
	//定义一个二维数组
	int[][] arr = {{11,22,33},{55,66},{77,88,99}};
		
        //使用双重for循环,遍历二维数组
        //第一层循环:遍历二维数组中有几个一维数组
        for (int i = 0; i < arr.length; i++) {
            //arr[i]是一维数组
            //第二层循环:遍历每个一维数组
            for(int j = 0 ; j < arr[i].length ; j++) {
                System.out.println(\"二维数组中第\"+(i+1)+\"个一维数组里的元素\"+arr[i][j]);
            }
        }
    }
}

5. 内存分析

对于一个二维数组来说,比如int[][] array={{10,0,0,20,0},{0,30,40,0,0},{0,0,0,0,0}};这个二维数组的结构如下图所示:

Java中二维数组的正确使用方法介绍

array[0]会获取array数组的第1个元素,因为array数组的每个元素都是一个一维数组,因此array[0]指向的数组就是{ 10, 0, 0, 20, 0 },其他的以此类推。

高维数组中的每个数据元素,保存的是低位数组的首地址。所以我们访问array[0]就相当于是在访问二维数组中的第一个一维数组的首地址,这样就可以得到第一个一维数组。

三. 多维数组

理论上,在Java中我们可以定义出任意维度的数组。但高于二维的多维数组,在实际开发中很少使用,大家知道Java中支持这种数据结构即可。如果你感兴趣,可以尝试着自己构造一个三维数组出来,就不在这里过多讲解啦,可以参考如下:

//动态初始化
int[][][] arr= new int[3][3][2];

//静态初始化
int[][][] arr2= {
    {
    	{1,2,3},{4,5,6},{7,8,9}
    },
    {
    	{1,2},{3,4}
    },
    {
    	{1,2},{3,4,5}
    }
};

四. 结语

至此,就把二维数组的内容给大家介绍完了,现在你知道如何使用二维数组了吗?二维数组的定义、动态和静态初始化、内存分析都是今天的重点,大家要牢牢掌握哦。

以上就是Java中二维数组的正确使用方法介绍的详细内容,更多关于Java 二维数组的资料请关注其它相关文章!

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 Java中二维数组的正确使用方法介绍 http://www.20zxx.cn/763012/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务