首页 > 编程语言 >java基础——二维数组基本概念

java基础——二维数组基本概念

时间:2022-11-24 17:47:12浏览次数:67  
标签:arr java 一维 int 元素 二维 数组 基本概念


之前我们已经知道什么是 数组(一维数组)java 基础——数组,数组的存取

 

这里补充一点: 数组本身是引用数据类型 ,数组的元素 可以是  基本数据类型 跟 引用数据类型  

 

那么?什么是二维数组 ?

 

官方定义:以一维数组作为一维数组元素的数组 

 

要是有点绕,不好理解,没关系,简单来说,就是一维数组里面存一维数组 ,这就是二维数组

 

到这,是不是已经基本明白了二维数组的概念了 

 

现在我们直接来看语法:

 


2. 二维数组语法格式

 

  • 数据类型 [][]    标识符(自己取的名字) = { {},{},{} ..... }  

 

  回顾一下一维数组 这种创建方式:

 

  // 这是一维数组
        int[]  arr1 = {1,2,3};
        // 这是一个二维数组
        int[][]  arr2 = {{1,2,3},{2,3},{6,3,9}};

  


从外表来看二维数组就比一位数组 多 加了个 [ ],  数组内的元素也不是 个数了,而是 { } ,这个代表的是一个一维数组,里面内容一样是元素

 

  • 数据类型 [][]    标识符(自己取的名字)= new 数据类型[数组里元素个数][每个元素里面一维数组长度]  

 


  数组里元素个数  =  二维数组长度 

 

int[][]  array1 = new int[3][2]; 

  来看个图解

 

 

 声明一个二维数组array1,里面有三个元素,每个元素里面有两个元素的数组

 

3. 二维数组的取值

 

单个取值

 

二维数组的取值呢,跟一维数组还是有差别的

 

比如下面这个例子,我们要获取这个二维数组中的 6  

 

  int[][]  arr2 = {{1,2,3},{2,3},{6,3,9}};

 

这边我们可以理解成一个平面坐标系,坐标系我们都知道,(x,y)我们可以确定一个平面点的位置,这边也一样  

 

首先可以看出这个二维数组里面有三个元素:

 

元素1: 下标 0 (数组的角标从0 开始),{1,2,3}  

元素2: 下标 1,{2,3} 

元素3: 下标 2,{6,3,9} 

 

每个元素又是一个数组,下标还是从0 开始

 

所以 我们获取 6 这个元素 arr2[2][0], 意味着 6 在这个 二维数组中 元素3 (下标2) 里面 的 数组 的 第1个(下标0) 元素 

  int[][]  arr2 = {{1,2,3},{2,3},{6,3,9}};

   System.out.println(arr2[2][0]);

  

 

 

 

这种方式的也一样:int[][]  array1 = new int[3][2]; 

 

 

 

 

可以理解成 3 行 2 列  

 

遍历取值 

 

我们来看看二维数组是怎么遍历的,这边我们就需要两层 for循环了  

 

 

比如:

 

遍历  int[][]  arr2 = {{1,2,3},{6,3,9,10}};   

 

 int[][]  arr2 = {{1,2,3},{6,3,9,10}};


        System.out.println("----------基本循环----------");
        for (int i = 0; i < arr2.length; i++) {
            for (int j = 0;j < arr2[i].length;j++) {
                System.out.print(arr2[i][j]+" ");
            }
        }
        System.out.println();
        System.out.println("----------增强for循环----------");
        for (int[] ints : arr2) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
        }

  输出结果:

 

 

4.  存值 

二维数组的 存值 你可以 一个一个来,    arr[0][0]  。。。。

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

        arr[0][0] = 1;
        arr[0][1] = 3;
        arr[1][0] = 5;
        arr[1][1] = 7;
        arr[2][0] = 9;
        arr[2][1] =11;

        for (int[] ints : arr) {
            for (int anInt : ints) {
                System.out.println(anInt);
            }
        }

  

当然里面是存的一维数组,你也可以这样 ,比如有两个一维数组 ,一维数组的值怎么来,就不用多说了,除了常规添加外,java 基础——数组 可以看看逗号隔开字符串转数组方法    (开发中数组转字符串,转list集合用的很多

 

比如 现在有两个字符串,要存储到二维数组中 

 //定义一个二维数组

        String [][] arr =  new  String[3][2];

        String   str1  = "2,3,6,9";
        String   str2  = "11,13";
        //字符串转数组
        String[] split = str1.split(",");
        String[] split1 = str2.split(",");
        //将二维数组第一个元素的值设置为 一维数组 split
        arr[0] = split;
        //将二维数组第二个元素的值设置为 一维数组 split1
        arr[1] = split1;
        //输出看看
        for (String[] strings : arr) {
            for (String string : strings) {
                System.out.println(string);
            }
        }

  

 

 这里也可以看到二维数组中 一维数组的长度可以不一样 ,第三个没有元素,就是我们定义的默认一维数组长度 2 了,为null

 

 

 

扩展 :二维数组的初始化内存解析  (有的面试会问,有个印象)

 

现在我们知道了二维数组 获取单个 元素,以及 遍历  , 下面我们来加深下对二维数组的理解 

 

一般我们声明二维数组的初始化 ,

 

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

  

它的外层元素:arr[0]  arr[1]  arr[2] .....

 

它的内层元素:arr[0][0]  arr[1][2]  ......  

 

内层元素我们都知道,是获取一个具体的值 

 

那么?外层是什么东西呢?我们来打印一下 

 

 int[][]  arr = new  int [3][2];
    System.out.println(arr[0]);

  

 

 可以看出它是一个地址值,这是二维 元素 指向 一位数组的地址值 

 

 

arr 才是栈 指向 二维数组的地址值 

 int[][]  arr = new  int [3][2];
  System.out.println(arr);

  

 

 

 

 

看出区别了没,一维数组一个[  二维数组  两个[ 

 

 

 

更多内容,还请关注【java资讯】 公众号

 

标签:arr,java,一维,int,元素,二维,数组,基本概念
From: https://www.cnblogs.com/zeroll/p/16922648.html

相关文章

  • Java实现环形队列
    这里我定义的环形队列为:列表中最后一个元素是指向列表中的第一个元素,而且里面提供一个next方法,可以不断获取下一个元素,在环形队列中也就是不断的转圈,实现方式如下:队列中提供......
  • php二维数组转一维数组的方法
    如下二维数组$arr=array(1){[0]=>array(1){["imgurl"]=>string(79)"/img/upload/microChatData/1/20161221/thumb/621fc7668474b47b43......
  • Java常用数据结构
    1、数组数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。我们直接可以利用元素的索引(index)可以计算出该元......
  • java 数据类型
    java属于强类型语言,要求变量必须符合规定,变量必须先定义在使用。java数据类型分为两大类:基本数据类型和引用数据类型。整数拓展:二进制0b八进制0十六进制0x浮点数拓......
  • 【JAVA笔记】JAVA常用的字符串操作03
    一、Java中常用的字符串操作publicclassCommon_String_Operations{publicstaticvoidmain(String[]args){booleanp1=isEmpty("aa");S......
  • JavaScript的this指向
    1、结论:js中的this是当前方法所属的对象 'usestrict'letobj={name:'taotao',myName(){returnthis}}console.log(obj.myName())//{nam......
  • Vue中qrcode的使用方法(生成二维码插件) / 前端页面根据URL链接生成二维码
      1.下载npminstallqrcode--save-dev2.引入(在所需要的页面中引入)importQRCodefrom“qrcode”;//引入生成二维码插件3.生成二维码<canvasid="QRCode_head......
  • Java中File类mkdir和mkdirs的区别
    在API中,mkdir()的定义如下:创建此抽象路径名指定的目录。mkdirs()的定义如下:创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创......
  • [Android]java.io.FileNotFoundException: open failed: EACCES (Permission denied)
    如下错误:有很大部分原因都是忘记加权限了,我出现这个错误的原因是我往外部存储写文件,但是没有加上外部存储的权限,所以加入如下代码即可:<uses-permissionandroid:name="andro......
  • java.io.FileNotFoundException:open failed: EACCES (Permission denied)
    在android中创建一个FileOutputStream的时候,报错<spanstyle="font-size:18px;">java.io.FileNotFoundException:/storage/emulated/0/a.jpg:openfailed:EACCES(Permis......