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