二维数组
1:二位数组的初始化:
格式:数据类型[][]=new 数据类型[][]{{元素1,元素2},{元素1,元素2}};
范例:
int[][]arr=new int[][]{{11,22},{33,44}};
当然,也可以简写:
数据类型[][]数组名={{元素1,元素2},{元素1,元素2}};
范例:
int [][]arr={{11,22},{33,44}};
2:二维数组的内存图:
和一维数组一样,二维数组也是将其储存在栈内存和堆内存中,我们可以看下图理解:
其中二维数组储存的元素就是一维数组 , 计算机保留的是其地址符,通过地址符来最后进行寻找到数字
还有两种特殊情况是:
1:
public static void main(String[]args){
int[][] arr=new int[2][]; //第二个中括号里什么都没有,可以创建长度不用的一维数组
int[][] arr1={11,22};
int[][] arr2={44,55,66};
arr[0]=arr1; //表示一维数组arr1代表着arr中的元素1
arr[1]=arr2; //........元素2
}
我们可以看到下面的两个一维数组长度是不一样的,更加灵活
2:
public static void main(String[]args){
int[][] arr=new int[2][3]; /*第二个中括号里表示3,说明有两个一维数组,一维数组里面的元素有三个*/
int[][] arr1={11,22};
int[][] arr2={44,55,66};
arr[0]=arr1; //表示一维数组arr1代表着arr中的元素1
arr[1]=arr2; //........元素2
}
2:二维数组的遍历:
public static void main(String[]args){
int[][] arr={{11,22},{44,55,66}};
//外循环:遍历二维数组,得到每一个一维数组
for(int i=0;i<arr.length;i++){
//i表示二维数组中的每一个索引,
//arr[i]表示二维数组中的每一个一维数组(元素)
//内循环:遍历一维数组,得到里面的每一个元素
for(int j=0;j<arr[i].length;i++){
j表示一维数组里的每一个元素
System.out.println(arr[i][j+" "]);
}
}
}
当我们需要把数据分组管理时就要二维数组