小白咨询一下关于二维数组定义的问题

public static void main(String[] args) {

    int[][] array = new int[3][2];   //定义一个二维数组长度3,每个小数组里有2个元素

    array[0][0]=1;    //把1赋值给 第一个小数组中的第1个元素

    array[0][1]=2;    //把2赋值给 第二个小数组中的第2个元素

    array[1]=array[0];    //把第一个小数组的元素赋值给第二个小数组

    array[0]=new int[4];  //我记得数组的长度不是不能改变么?这条语句是什么意思呢?

    array[0][0]=10;    //把10赋值给第一个小数组中的第一个元素

    System.out.println(array[1][0]);

}

麻烦懂的朋友给我解释一下第5条语句的意思,小白在这里多谢了!!!

数组长度不能改变,但是你这个是new出来的,是一个新的数组

public static void main(String[] args) {

   int[][] array = new int[3][2];   //定义一个二维数组长度3,每个小数组里有2个元素

   array[0][0]=1;    //把1赋值给 第一个小数组中的第1个元素

   array[0][1]=2;    //把2赋值给 第二个小数组中的第2个元素

   array[1]=array[0];    //把第一个小数组的元素赋值给第二个小数组

   array[0]=new int[4];  //我记得数组的长度不是不能改变么?这条语句是什么意思呢?
   System.out.println(JSON.toJSONString(array));

   array[0][0]=10;    //把10赋值给第一个小数组中的第一个元素

   System.out.println(array[1][0]);

}

输出结果:[[0,0,0,0],[1,2],[0,0]],懂了吧,创建一个新的数组[0,0,0,0]

Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同

array[0]=new int[4];  是为它这一维重新分配空间。

这跟C里面二维数组的空间是连续的  不同,所以Java中可以有下面的语句:

int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};