java二维数组的初始化

如图,我定义一个二维数组,初始化为三行两列,但是下面我给第一个一维数组定义3个元素也不回报错,请问初始化第二维有啥用?这里初始化省略行的话会报错,省略列就不会,但是我看到... 如图,我定义一个二维数组,初始化为三行两列,但是下面我给第一个一维数组定义3个元素也不回报错,请问初始化第二维有啥用?
这里初始化省略行的话会报错,省略列就不会,但是我看到别人说的是行可以省列不能啊,怎么回事呢?
展开
 我来答
百毒千毒
2018-07-13 · TA获得超过4737个赞
知道大有可为答主
回答量:2504
采纳率:88%
帮助的人:652万
展开全部
你试试这样写:int[][] a=new int[3][];
然后你可以定义三个内部的一维数组比如:
a[0]=new int[]{0,1,2,5,6,7,8};
a[1]=new int[]{4,5,2,3,1};
a[2]=new int[]{9,1,7};
但是不能有3索引了,为什么?
因为长度已经被限制了只能是3个,内嵌的数组长度可以随意的!

回头看你说的这个:
int[][] a=new int[3][2];
也就是说,你这个3代表二位数组的长度,已经被限制了
但是后面这个2代表内置的数组元素个数,这个是可以变换的;
a[0]=new int[]{0,1,2,3};所以这个是合法的!

//总结了一下你看看:
import java.util.Arrays;
public class TwoArr {
public static void main(String[] args) {
//1
int[][] arr1={};
sop(arr1,1);

//2
int[][] arr2 = new int[][]{{1,2}, {2, 3}, {4, 5}};
sop(arr2,2);

//3
int[][] arr3 = {{1,2},{2, 3},{4, 5}};
sop(arr3,3);

//4
int[][] arr4=new int[3][2];
sop(arr4,4);
arr4[0]=new int[]{1,2,3,4};
sop(arr4,4);

//5
int[][] arr5= {{0,0},{0,0},{0,0}};
sop(arr5,5);
arr5[1]=new int[]{8,9,7,10};
sop(arr5,5);

//6
int[][] arr6= new int[][]{{0,0},{0,0},{0,0}};
sop(arr6,6);
arr6[0]=new int[] {8,7,9,5};
arr6[1]=new int[] {8,7,9,5};
arr6[2]=new int[] {8,7,9,5};
sop(arr6,6);

//7
int[][] arr7 =new int[3][];
arr7[0]=new int[]{1,2};
arr7[1]=new int[]{3,4};
arr7[2]=new int[]{5,6};
sop(arr7,7);

}
private static void sop(int[][] arr,int count) {
System.out.print("arr"+count+":[");
for(int[] a:arr) {
System.out.print(Arrays.toString(a));
}
System.out.println("];");
System.out.println();
}
}
//2,3,4,5,6完全一个意思,区别就只是书写上,下面看看测试的效果!

追问
那一位数组里面初始化的元素个数不影响后面实际定义的参数吗?比如arr6是三行两列,但是可以初始化成三行四列,开辟的空间不是超出了么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式