对Java中二维数组的深层认识

首先,在JAVA中,二维数组是一种数组的数组。它可以看作是一个矩阵,通常是由于表示二维数据节后,如表格和网格。

1.声明和初始化二维数组

声明

java 复制代码
int[][] arr;

初始化

java 复制代码
int[][] arr=new int[3][4];

或者用花括号嵌套

java 复制代码
int[][] arr={{1,2,3},{4,5,6}};

2.访问二维数组的元素

要访问或修改二维数组中的元素,可以使用数组下标:

java 复制代码
int value=arr[1][2];

3.动态初始化二维数组

java 复制代码
int[][] arr=new int[3][];
arr[0]=new int[2];//第一行有2列
arr[1]=new int[4]; //第二行有4列
arr[2]=new int[3];//第三行有3列

4.内存布局

在Java中,数组是对象,二维数组是包含数组引用的数组。每个子数组都是有独立的对象,存储在堆内存中。这意味着各子数组可以有不同的长度,并且改变一个子数组不会影响到其他子数组。

上面已经说了数组是对象,并且它是一个特殊的一维数组,那么arr在一维数组中就是数组对象的引用,又因为二维数组是一个特殊的一维数组,那么拆分一下,是不是每一行arr[i]都是一维数组。则arr[0]就是第一行对象的引用,arr[1]就是第二行对象的引用。如下图所示:

java 复制代码
public class demo5 {
    public static void main(String[] args) {
        int[][] arr={{1,2,3},{4,5,6}};
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

运行结果:

从上述运行结果我们不难看出,arr[i]就是一个对象的引用(即一个一维数组)

5.遍历二维数组

fori循环遍历

java 复制代码
 public static void main(String[] args) {
        int[][] arr={{1,2,3},{4,5,6}};
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]);
            }
            System.out.println();
        }
    }

运行结果:

foreach循环遍历

java 复制代码
for (int[] tmpArray:arr) {
            for (int x:tmpArray) {
                System.out.print(x);
            }
            System.out.println();
        }

运行结果:

deeptoString打印所有元素

java 复制代码
 String ret= Arrays.deepToString(arr);
        System.out.println(ret);

运行结果:

相关推荐
骁的小小站2 分钟前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
计算机学姐1 小时前
基于微信小程序的高校班务管理系统【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
一路向北⁢1 小时前
基于 Apache POI 5.2.5 构建高效 Excel 工具类:从零到生产级实践
java·apache·excel·apache poi·easy-excel·fast-excel
心灵宝贝2 小时前
申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
开发语言·php
lly2024062 小时前
PHP 字符串操作详解
开发语言
像是套了虚弱散3 小时前
DevEco Studio与Web联合开发:打造鸿蒙混合应用的全景指南
开发语言·前端·华为·harmonyos·鸿蒙
旭意4 小时前
C++蓝桥杯之结构体10.15
开发语言·c++
毕设源码-赖学姐4 小时前
【开题答辩全过程】以 基于Android的校园快递互助APP为例,包含答辩的问题和答案
java·eclipse
damo014 小时前
stripe 支付对接
java·stripe
麦麦鸡腿堡5 小时前
Java的单例设计模式-饿汉式
java·开发语言·设计模式