二维数组


二维数组

一、二维数组

1、二维数组的含义:
		就是元素是一维数组的数组
		举例:
		   {{11,22},{11,33},{55,88}}
2、二维数组的定义格式:
            格式1:
                数据类型[][] 变量名 = new 数据类型[m][n];
                左边:
                    数据类型:表示最终元素的数据类型
                    [][]:表示是一个二维数组
                    变量名:二维数组的名称
                右边:
                    new:表示为二维数组分配内存空间
                    [m]:表示这个二维数组中有个元素,其中元素表示的是m个一维数组
                    [n]:表示的是每一个一维数组中有n个元素,元素的数据类型与定义时的数据类型一致

               举例:int[][] arr = new int[3][2]
                    解释:表示的是定义了一个名为arr的二维数组,元素是由3个一维数组组成,其中
                        每个一维数组的元素的个数为2个
 ==================================================================================
            格式2:
             	数据类型[][] 变量名 = new 数据类型[m][]
             右边:
             	[]:这里暂时不将每个一维数组中的元素个数写死,以将来传入的一维数组元素个数而定
             举例:
            	int[][] arr = new int[3][]
  ==================================================================================
            格式3:
            数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…},...}
            举例:
            int[][] arr = new int[][]{{1,2},{11,22,33},{100,200,300},{10,20}};
            
             简化格式:
            数据类型[][] 变量名 = {{元素…},{元素…},{元素…},...};
            举例:
                int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20}};
====================================================================================     
3、注意格式的转换:
			以下定义的格式也算正确(不推荐使用)
                        数据类型 变量名[][] = new 数据类型[m][n];
                        数据类型[] 变量名[] = new 数据类型[m][n];
                    举例:int[][] arr = new int[2][3]; (推荐第一种)
                          int arr[][] = new int[3][4];
                          int[] arr[] = new int[2][3];
4、第一种格式:
			获取二维数组中元素的地址值,此地址值就是一维数组的地址值
public class Array2Demo1 {
    public static void main(String[] args) {
        //使用第一种格式定义一个二维数组,每一个一维数组的元素个数为2
        int[][] arr = new int[3][2];
        //3代表的是由三个一维数组组成
        //2代表的是每一个一维数组的元素个数为2个
        //按照之前的输出格式,我们先输出名字
        System.out.println(arr);   //输出的是二维数组在堆内存中的地址值 [[I@1540e19d
        System.out.println(arr[0]);//输出的是第一个一维数组在内存中的地址值 [I@677327b6
        System.out.println(arr[1]);//输出的是第二个一维数组在内存中的地址值 [I@14ae5a5
        System.out.println(arr[2]);//输出的是第三个一维数组在内存中的地址值 [I@7f31245a
5、获取元素的方法
public class Array2Demo1 {
    public static void main(String[] args) {
        //使用第一种格式定义一个二维数组,每一个一维数组的元素个数为2
        int[][] arr = new int[3][2];
        //数组获取元素的方法是通过索引获取
        System.out.println(arr[0][0]); //0  //输出的是第一个一维数组中第一个元素值
        System.out.println(arr[0][1]); //0  //输出的是第一个一维数组中第二个元素值
        System.out.println(arr[2][1]); //0 //输出的是第三个一维数组的第二个元素值

当使用两种不同格式定义二维数组,未赋值之前,二者输出的地址值不同

6、第二种格式:
public class Array2Demo2 {
    public static void main(String[] args) {
        //使用第二种格式定义一个二维数组,每一个一维数组的元素个数没有定
        int[][] arr = new int[3][];
        System.out.println(arr);   //输出的是二维数组本身的地址值 [[I@1540e19d
        System.out.println(arr[0]); //输出的是二维数组中第一个一维数组的地址值 null
        System.out.println(arr[1]); //输出的是二维数组中第二个一维数组的地址值 null
        System.out.println(arr[2]); //输出的是二维数组中第三个一维数组的地址值 null
   =======================给二维数组的元素赋值================================     
        //初始化一个元素个数为2个的一维数组,赋值给二维数组中第一个元素
        arr[0] = new int[2];
        //初始化一个元素个数为3个的一维数组,赋值给二维数组中第二个元素
        arr[1] = new int[3];
        //初始化一个元素个数为4个的一维数组,赋值给二维数组中第三个元素
        arr[2] = new int[4];
==========================赋值后地址值不是null===================================
        System.out.println(arr); //输出的是二维数组本身的地址值 [[I@1540e19d
        System.out.println(arr[0]); //输出的是二维数组中第一个一维数组的地址值 [I@677327b6
        System.out.println(arr[1]); //输出的是二维数组中第二个一维数组的地址值 [I@14ae5a5
        System.out.println(arr[2]); //输出的是二维数组中第三个一维数组的地址值[I@7f31245a
        //获取二维数组中第二个一维数组中的第1个元素
        System.out.println(arr[1][0]);  //默认为0



7、第三种格式:
public class Array2Demo3 {
    public static void main(String[] args) {
        //使用二维数组定义格式2定义
        int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};

        System.out.println(arr); //输出二维数组本身的地址值
        System.out.println(arr[0]); //输出二维数组中第一个一维数组的地址值
        System.out.println(arr[1]); //输出二维数组中第二个一维数组的地址值
        System.out.println(arr[2]); //输出二维数组中第三个一维数组的地址值
        System.out.println(arr[3]); //输出二维数组中第四个一维数组的地址值

二、二维数组的遍历以及包装

1、需要两个for循环:
		外部for循环遍历获取的是每一个一维数组
		内部for循环遍历的是获取到的每一个一维数组中每个元素值
二维数组遍历
        int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};
        分析:
            1、先获取每一个一维数组
            2、一次遍历每一个一维数组中的元素值
public class Array2Test1 {
    public static void main(String[] args) {
   		 //定义一个二维数组
        int[][] arr ={{1,2},{11,22,33},{10,20,30,40}};
			
        for(int i =0;i<arr.length;i++){	//外层for获取每一个一维数组
            for(int j=0;j<arr[i].length;j++){ //内层for获取每一个一维数组的元素值
                if(j==0){
                    System.out.print("["+arr[i][j]+","); //遍历包装,为了美观
                }else if(j==arr[i].length-1){
                    System.out.print(arr[i][j]+"]");  //遍历包装,为了美观
                }else{
                    System.out.print(arr[i][j]+",");  //中间数直接输出,不需要包装
                }

            }
        }
        }
    }

            执行结果如下:
            
            [1,2][11,22,33][10,20,30,40]
            Process finished with exit code 0

1


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM