Java基础 多维数组 多维数组内存图 多维数组的操作

Java基础

二维数组

1.动态初始化

  • 格式:数据类型[][] 数组名 = new 数据类型[m][n]
  • m:代表这个二维数组能存多少个一维数组。
  • n:代表每个一维数组能存多少个元素。
  • 例如:int[][] arr = new int[3][3];
public class Demo {
    public static void main(String[] args) {
        int[][] arr =new int[3][3];
        System.out.println(arr);
    }
}

在这里插入图片描述
[[:代表是二维数组
I:代表int
@:分隔符
后面的是十六进制内存地址

赋值和遍历

public class Demo {
    public static void main(String[] args) {
        int[][] arr =new int[3][3];
        arr[0][0]=11;
        arr[0][1]=22;
        arr[0][2]=33;
        arr[1][0]=44;
        arr[1][1]=55;
        arr[1][2]=66;
        arr[2][0]=77;
        arr[2][1]=88;
        arr[2][2]=99;
        System.out.println(arr[0][0]);//11
        System.out.println(arr[0][1]);//22
        System.out.println(arr[0][2]);//33
        System.out.println(arr[1][0]);//44
        System.out.println(arr[1][1]);//55
        System.out.println(arr[1][2]);//66
        System.out.println(arr[2][0]);//77
        System.out.println(arr[2][1]);//88
        System.out.println(arr[2][2]);//99
    }
}

跟一维数组相同

2.静态初始化

完整格式:数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2…} , {元素1, 元素2…} …};
简化格式: 数据类型[][] 变量名 = { {元素1, 元素2…} , {元素1, 元素2…} …};

public class Demo {
    public static void main(String[] args) {
        int[][] arr = {{11,22,33},{44,55,66},{77,88,99}};
        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[1][2]);
        System.out.println(arr[2][0]);
        System.out.println(arr[2][1]);
        System.out.println(arr[2][2]);
    }
}

内存图

public class Demo {
    public static void main(String[] args) {
        int[] arr1 ={11,22,33};
        int[] arr2 ={44,55};
        int[] arr3 ={66,77,88,99,100};
        int[][] arr=new int[3][3];
        //arr[2][4]=100;//索引越界异常ArrayIndexOutOfBoundsException
        arr[0]=arr1;//替换原来的数组地址
        arr[1]=arr2;
        arr[2]=arr3;
        System.out.println(arr[2][4]);//100
    }
}

在这里插入图片描述

3.二维数组的操作

二维数组遍历

已知一个二维数组 arr = {{11, 22, 33}, {33, 44, 55}}; 遍历该数组,取出所有元素并打印

public class Demo {
    public static void main(String[] args) {
       int[][] arr = {{11, 22, 33}, {33, 44, 55}};
        for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
            for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
                System.out.print(arr[i][i1]+" ");
            }
        }
    }
}

在这里插入图片描述

求二维数组所有数据的和
public class Demo {
    public static void main(String[] args) {
       int[][] arr = {{11, 22, 33}, {33, 44, 55}};
       int sum=0;
        for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
            for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
                sum+=arr[i][i1];
            }
        }
        System.out.println(sum);//198
    }
}
求二维数组中的最大值
public class Demo {
    public static void main(String[] args) {
       int[][] arr = {{11, 22, 33}, {33, 44, 55}};
       int max=arr[0][0];
        for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
            for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
                if (max<arr[i][i1]){//max与数组中每一个值比较
                    max=arr[i][i1];
                }
            }
        }
        System.out.println(max);//55
    }
}
求二维数组中每一个一维数组的最大值
public class Demo {
    public static void main(String[] args) {
       int[][] arr = {{11, 22, 33}, {33, 44, 55}};
        for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
            int max=arr[i][0];//取出每个一维数组中的第一个元素
            for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
                if (max<arr[i][i1]){//max与数组中每一个值比较
                    max=arr[i][i1];
                }
            }
            System.out.println(max);//外层循环执行一次就相当于比较出一个一维数组的最大值  33  55
        }
    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值