java二维数组的初始化

如图,我定义一个二维数组,初始化为三行两列,但是下面我给第一个一维数组定义3个元素也不回报错,请问初始化第二维有啥用?
这里初始化省略行的话会报错,省略列就不会,但是我看到别人说的是行可以省列不能啊,怎么回事呢?

你试试这样写: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是三行两列,但是可以初始化成三行四列,开辟的空间不是超出了么?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答