1.使用方法:
1)int [][]arr=new {{},{},{}...};
注意此处的{}不能够省略,如果省略相当于是将一个数据的基本类型赋给了这个一维数组从而导致数据类型不匹配;
int [][]a= {
{0,0,0,0,0,},
{0,1,2,5,0,},
{0,2,3,5,0,},
{0,0,0,0,0,}
};
2)int [][]arr=new int [值1][值2]
此处的值2可以进行省略,表示的就是有值1这么多个数组,但每个数组中的元素个数不确定后续的元素可以进行动态赋值
int [][]arr=new int [值1][值2];
3)和第二种类似,先进行声明,再进行分配空间
int [][]arr;
arr=new int [值1][值2];
2. 二维数组的赋值
因为它是一个二维数组,拥有两个参数所以我们可以利用两个for循环来进行赋值,一个用来指行,另一个用来指列,例如:让一个二维数组输出为
1
2 2
3 3 3
解决这个问题,我们可以先进行二维数组的定义,由于它每一个一维数组中的元素个数不确定,我们就可以定义为:
int [][]arr=new int[3][];
既然定义了数组,我们再进行动态分配空间。没有进行分配空间之前,是不能进行赋值的。这一步就是在定义一维数组的长度。
for(int i=0;i<arr.length;i++) {
arr[i]=new int [i+1];
}
这里的arr.length的值为3即它相当于它有三个一维数组,现在如果进行输出的话
0
0 0
0 0 0
这样我们就拥有存放三个一维数组的位置,然后我们需要对其进行赋值操作,对于for循环来说,由起始值与终止值,变化规律以及循环操作所构成。最外层的for循环就是对这三个一维数组进行遍历,所以起始值为0,终止值为3,即arr.length,变量迭代为自增;而对每一个一维数组进行遍历就又需要一个for循环起始值为0,终止值为该一维数组的长度即arr[行数].length,变量迭代也为自增,
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
arr[i][j]=i+1;
}
}
赋值也完成后就可以进行遍历输出了也像上面遍历赋值一样进行输出即可
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
3.遍历案例
int arr[][]={{4,6},{1,4,5,7},{-2}},遍历该数组并得到和。这里挺简单就直接上代码了,分析还是和上面一样的,进行遍历就行了。
int arr[][]={{4,6},{1,4,5,7},{-2}};
int sum=0;
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
sum=sum+arr[i][j];
}
}
System.out.println(sum);
4.二维数组案例
使用二维数组打印一个10行杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
int [][]arr=new int [10][];//由于不能确定每一个数组内元素的个数
for(int i=0;i<arr.length;i++) {
arr[i]=new int[i+1];//利用动态分配空间的方法进行分配
}
for(int i=0;i<arr.length;i++) {//进行每一个元素的遍历
for(int j=0;j<arr[i].length;j++) {
if(j==0||j==arr[i].length-1) {//判断是否是首尾元素,是则赋值为1
arr[i][j]=1;
}else {
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];//按照杨辉三角的规律进行计算并赋值
}
}
}
for(int i=0;i<arr.length;i++) {//进行遍历输出
for(int j=0;j<arr[i].length;j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
运行结果:
4.注意以及细节
- 二维数组的声明:int [][] 数组名,int 数组名[][],以及int []数组名[]
- 二维数组实际上是由多个一维数组组成的,各一维数组的长度可相同也可以不相同,如:a[][]={{1,2,3},{1,2},{50}},a[0]是由三个元素组成,a[1]是由两个元素组成,a[2]是由一个元素组成。可称为列数不等的二位数组,
无他,唯手熟尔。