java 二维数组

java的二维数组在创建时就与C语言有很大不同
SE.08.02.00.00

public class helloworld {
    public static void main(String[] args) {
        int[][] arr1 = {{1, 2, 3}, {4, 5, 6}};//与后面一种定义完全相同,只不过这种是简写
        int[][] arr2 = new int[][]{{1, 2, 3}, {4, 5, 6}};//静态初始化
        int [][] arr3 = new int[2][3];//动态初始化
    }
}

java中二维数组的初始化赋值时一定要注意要区分好行列。
和一维数组定义的时候一样 new int arr[][]{}方阔号和大括号里面只允许有一个是赋值的。

java在二维数组上非常强调“二维数组是特殊的一维数组”,我们将aar2[0]打印出来就会发现打印出来的是一个地址,这个地址就是{1,2,3}这个一维数组的地址

public class helloworld {
    public static void main(String[] args) {
        int[][] arr1 = {{1, 2, 3}, {4, 5, 6}};//与后面一种定义完全相同,只不过这种是简写
        int[][] arr2 = new int[][]{{1, 2, 3}, {4, 5, 6}};//静态初始化
        int [][] arr3 = new int[2][3];//动态初始化
        System.out.println(arr2[0]);//打印出来是一个地址,并不是整型数字。
    }
}

在这里插入图片描述

所以一定要注意,二维数组的java虚拟机里是这样存储的
当我们创建int[][] arr2 = new int[][]{{1, 2, 3}, {4, 5, 6}};时,系统先创建三个一维数组arr2、{1,2,3}、{4,5,6},这个arr2有两个元素,这俩个元素都是地址,一个地址指向的是{1,2,3}这个数组,一个地址是指向{4,5,6}这个数组
所以我们在写arr2.length时这个值并不是6 ,而是2。而{1,2,3}这个数组元素个数可以用arr[i].length来表示
所以遍历打印二维数组元素的代码如下:

import java.util.Arrays;

public class helloworld {
    public static void main(String[] args) {
        int[][] arr = new int[][]{{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();
        }
        //第二种方式,用toString
        for (int i = 0; i < arr.length; i++) {
            System.out.println(Arrays.toString(arr[i]));
        }
        //第三种方式,用for each
        for (int[] ret : arr) {
            for (int x :ret) {
                System.out.print(x+" ");
            }
            System.out.println();
        }
        //第四种方式,用deepToString
        System.out.println(Arrays.deepToString(arr));
    }
}

打印结果
在这里插入图片描述

此外
在C语言中我们在定义二维数组时要求行下标可以省略,列下标不可以省略,这样就保证了C语言中创建的二维数组是先铺满一行再铺满一行这样的分布的。
但是在java中恰恰是相反的,行下标不可以省略,列下标可以省略,所以java里面的二维数组可以是不规则的。

请看下面的代码

public class helloworld {
    public static void main(String[] args) {
        int[][] arr = new int[2][];//静态初始化
        arr[0] = new int[2];
        arr[1] = new int[4];
        //一种方式,用两次循环
        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();
        }
    }
}

在这里插入图片描述
至此,二维数组简单讲解到这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值