圆咕噜咕噜 发表于 2022-11-24 17:22:10

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

之前我们已经知道什么是 数组(一维数组)java 基础——数组,数组的存取
 
这里补充一点: 数组本身是引用数据类型 ,数组的元素 可以是  基本数据类型 跟 引用数据类型  
 
那么?什么是二维数组 ?
 
官方定义:以一维数组作为一维数组元素的数组 
 
要是有点绕,不好理解,没关系,简单来说,就是一维数组里面存一维数组 ,这就是二维数组
 
到这,是不是已经基本明白了二维数组的概念了 
 
现在我们直接来看语法:
 

2. 二维数组语法格式
 

[*]数据类型 [][]    标识符(自己取的名字) = { {},{},{} ..... }  
 
  回顾一下一维数组 这种创建方式:
 
// 这是一维数组
      int[]arr1 = {1,2,3};
      // 这是一个二维数组
      int[][]arr2 = {{1,2,3},{2,3},{6,3,9}};  

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

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

  数组里元素个数  =  二维数组长度 
 
int[][]array1 = new int;   来看个图解
https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173108956-613665966.png
 
 
 声明一个二维数组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, 意味着 6 在这个 二维数组中 元素3 (下标2) 里面 的 数组 的 第1个(下标0) 元素 
int[][]arr2 = {{1,2,3},{2,3},{6,3,9}};

   System.out.println(arr2);  https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173150844-2075715909.png
 
 
 
这种方式的也一样:int[][]  array1 = new int; 
 https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173200083-2129058280.png
 
 
 
可以理解成 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.length;j++) {
                System.out.print(arr2+" ");
            }
      }
      System.out.println();
      System.out.println("----------增强for循环----------");
      for (int[] ints : arr2) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
      }  输出结果:
https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173240960-1608578487.png
 
 
4.  存值 
二维数组的 存值 你可以 一个一个来,    arr  。。。。
int[][] arr = new int;

      arr = 1;
      arr = 3;
      arr = 5;
      arr = 7;
      arr = 9;
      arr =11;

      for (int[] ints : arr) {
            for (int anInt : ints) {
                System.out.println(anInt);
            }
      }  
当然里面是存的一维数组,你也可以这样 ,比如有两个一维数组 ,一维数组的值怎么来,就不用多说了,除了常规添加外,java 基础——数组 可以看看逗号隔开字符串转数组方法    (开发中数组转字符串,转list集合用的很多)
 
比如 现在有两个字符串,要存储到二维数组中 
//定义一个二维数组

      String [][] arr =newString;

      String   str1= "2,3,6,9";
      String   str2= "11,13";
      //字符串转数组
      String[] split = str1.split(",");
      String[] split1 = str2.split(",");
      //将二维数组第一个元素的值设置为 一维数组 split
      arr = split;
      //将二维数组第二个元素的值设置为 一维数组 split1
      arr = split1;
      //输出看看
      for (String[] strings : arr) {
            for (String string : strings) {
                System.out.println(string);
            }
      }  https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173354437-281305462.png
 
 这里也可以看到二维数组中 一维数组的长度可以不一样 ,第三个没有元素,就是我们定义的默认一维数组长度 2 了,为null
 
https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173402146-1790963398.png
 
 
扩展 :二维数组的初始化内存解析  (有的面试会问,有个印象)
 
现在我们知道了二维数组 获取单个 元素,以及 遍历  , 下面我们来加深下对二维数组的理解 
 
一般我们声明二维数组的初始化 ,
 
int[][]arr = newint ;     
它的外层元素:arr  arr  arr .....
 
它的内层元素:arr  arr  ......  
 
内层元素我们都知道,是获取一个具体的值 
 
那么?外层是什么东西呢?我们来打印一下 
 
int[][]arr = newint ;
    System.out.println(arr);  https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173458234-949598865.png
 
 可以看出它是一个地址值,这是二维 元素 指向 一位数组的地址值 
https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173505965-1318600064.png
 
 
arr 才是栈 指向 二维数组的地址值 
int[][]arr = newint ;
System.out.println(arr);  https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173521462-141272514.png
 
 https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173524830-435447730.png
 
 
看出区别了没,一维数组一个[  二维数组  两个[ 
 
https://img2022.cnblogs.com/blog/1813348/202211/1813348-20221124173536360-964625508.png
 
 
更多内容,还请关注【java资讯】 公众号
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: java基础——二维数组基本概念