有误。
回答中有错误,不能删除问题,勿看,免得造成困扰。
回答中有错误,不能删除问题,勿看,免得造成困扰。
2018-03-21
二维数组:就是两个一维数组的在一个盒子里的数组,就叫二维数组。
int[][] arr=new int[][]那么右边两个空格是嘛意思呢?比如第一个格里面输入一个1,如下:
int[][] arr=new int[1][]这个左边格子的1代表的是什么呢?
代表的是:这个二维数组的空间长度是2(别忘了int类型的默认值是从0开始数的,不是1,所以长度单位是[0.1]两个空间,也就是两个长度)或 这个二维数组里面的第一个一维数组。(具体看是声明还是引用。)
int[][] arr=new int[1][0]那么右边格子的0代表的是什么呢?
代表的是:这个二维数组里面的两个一维数组的空间长度为1,也就是第一个一维数组和第二个一维数组的空间长度都是1,也就是只有一个值。
两个一维数组的长度都为1(就是两个一维数组里面都只有一个值),组成的二维数组可以这样写:
int[][] arr=new int[1][0];
那长度不相等的一维数组想组合成二维数组怎么写呢?比如第一个一维数组里面有一个值,第二个有两个值,第三个有三个值。如下:
int[][]={{1},{2,3},{4,5,6}};
我想用:int[][]=new int[][];这样的格式如何表达呢?
这个时候就只能写第一个空格了,如下:
int[][]=new int[2][];
为什么不能写第二空格呢?因为第二个空格的含义是一维数组空间长度,都不相等了,怎么写?
如果非要写,也可以,只能往大写,不能往小写,比如:
原式:int[][]={{1},{2,3},{4,5,6}};
变式:int[][]=new int[2][2] ;意思是:名字叫arr整数类型的二维数组的空间长度是3(就是有三个一维数组组成的),里面三个一维数组的长度是3(就是每个一维数组都有3个值)
那么问题来了?我的第一个一维数组和第二个一维数组没有3个值啊?
arr[0][0]=1;(意思是:arr这个二维数组里面的第一个一维数组的第一个值为1)
arr[0][1]=?;现在如果我要输出arr这个二维数组的第一个一维数组的第二个值呢?之前我们都没有写啊,就只有一个值:1。那么会输出什么呢?
arr[0][1]=0;会输出0,为什么呢?因为int类型的默认值为0,当你没有赋值的时候,会默认为0。
所以长度不相等的一维数组想组成二维数组不建议int[][] arr=new int[][]用这种方法,会有默认值的出现。
不知道大家有没有理解二维数组呢?
举报