一、什么是二维数组
简单来说,二维数组就是一种容器,里面存储着一维数组
二、二维数组动态初始化
格式:数据类型 [ ] [ ] 变量名=new 数据类型 [m] [n]
m表示这个二维数组存放着m个一维数组;n表示每个一维数组里面有多少个元素。
package TwoArrayText;
public class text {
public static void main(String[] args) {
int[] arr1 = {11, 22, 33};
int[] arr2 = {44, 55, 66};
int[] arr3 = {77, 88, 99};
int[][] arr = new int[3][3];
arr[0] = arr1;
arr[1] = arr2;
arr[2] = arr3;
System.out.println(arr[1][2]);
}
}
将以上代码修改一下:
package TwoArrayText;
public class text {
public static void main(String[] args) {
int[] arr1 = {11, 22, 33};
int[] arr2 = {44, 55, 66};
int[] arr3 = {77, 88, 99,100};
int[][] arr = new int[3][3];
//arr[2][3] = 100;
arr[0] = arr1;
arr[1] = arr2;
arr[2] = arr3;
System.out.println(arr[1][2]);
System.out.println(arr[2][3]);
}
}
第二行输出语句会正常输出,但是,arr3没有100的值,“arr[2][3] = 100;”会显示索引越界异常,这是因为arr[2][3]在内存中如果数组没有开辟空间,就没有可存放的位置,
int[] arr3 = {77, 88, 99,100};将原有的内存地址改变了,所以输出的时候arr[2][3]就会找到内存地址中存放的数据从而输出
三、二维数组静态初始化
格式:数据类型[ ][ ]变量名=new数据类型[ ][ ]{{元素1,元素2...},{元素1,元素2...}...};
简化格式:数据类型[ ][ ]变量名={{元素1,元素2...},{元素1,元素2...}...};
package TwoArrayText;
public class text {
public static void main(String[] args) {
int[][] arr = {{11, 22}, {33, 44}};
System.out.println(arr[1][1]);
System.out.println("---------");
int[] arr1 = {11, 22};
int[] arr2 = {33, 44};
//第二种方法
int[][] array = {arr1, arr2};
System.out.println(array[1][1]);
}
}