二维数组
概念:二维数组本质也是一维数组,只是每个空间中存储的是一维数组。
例如:int[][] arr ;表示定义了一个数组,名字叫arr,堆空间中每个“格子”中放入的数据都是int[]类型的
二维数组的声明
数据类型[][] 数组名;
eg:int [][] arr;
数据类型 数组名[][];
eg:int arr[][];
二维数组的初始化
二维数组的初始化可以分为静态初始化和动态初始化
01、静态初始化
public class Test12{
public static void main(String[] args){
//静态初始化1
//String[][] names = new String[][]{{"胡歌","彭于晏","陈冠希"},{"周杰伦","林俊杰","邓紫棋","薛之谦"}};
//静态初始化2
//String[][] names;
//names = new String[][]{{"胡歌","彭于晏","陈冠希"},{"周杰伦","林俊杰","邓紫棋","薛之谦"}};
//静态初始化3
String[][] names = {{"胡歌","彭于晏","陈冠希"},{"周杰伦","林俊杰","邓紫棋","薛之谦"}};
//设置指定下标上的元素
names[0][1] = "周兴哲";
//获取指定下标上的元素
String str = names[0][1];
System.out.println("获取指定下标上的元素:" + str);
//获取长度
System.out.println("获取二维数组中一维数组的长度:" + names.length);//2
System.out.println("获取二维数组中第一个一维数组元素的长度:" + names[0].length);//3
System.out.println("获取二维数组中第二个一维数组元素的长度:" + names[1].length);//4
}
}
内存分析
02、动态初始化
public class Test13{
public static void main(String[] args){
//动态初始化1
//String[][] names = new String[2][3];//2表示2个一维数组,3表示每个一维数组有3个元素
//动态初始化2
String[][] names;
names = new String[2][3];//2表示2个一维数组,3表示每个一维数组有3个元素
}
}
需求:使用动态初始化声明二维数组,二维数组中有两个一维数组
第一个一维数组有3个元素
第二个一维数组有4个元素
代码实现
public class Test14{
public static void main(String[] args){
String[][] names = new String[2][];
String[] s1 = {"aaa","bbb","ccc"};
String[] s2 = {"ddd","eee","fff"};
names[0] = s1;
names[1] = s2;
for(String[] ss:names){
for(String element:ss){
System.out.println(element);
}
}
}
}
内存分析

二维数组的遍历
方式一:
public class Test12{
public static void main(String[] args){
String[][] names = {{"胡歌","彭于晏","陈冠希"},{"周杰伦","林俊杰","邓紫棋","薛之谦"}};
//设置指定下标上的元素
names[0][1] = "周兴哲";
//获取指定下标上的元素
String str = names[0][1];
System.out.println("获取指定下标上的元素:" + str);
//遍历思路:循环遍历出一维数组,再循环遍历一维数组的元素
//遍历数组 -- for循环
for(int i = 0;i<names.length;i++){
for(int j = 0;j<names[i].length;j++){
System.out.println(names[i][j]);
}
}
System.out.println("------------------------------------");
for(String[] ss:names){
for(String element:ss){
System.out.println(element);
}
}
}
}
方式二:
public class Test12{
public static void main(String[] args){
String[][] names = {{"胡歌","彭于晏","陈冠希"},{"周杰伦","林俊杰","邓紫棋","薛之谦"}};
//设置指定下标上的元素
names[0][1] = "周兴哲";
//获取指定下标上的元素
String str = names[0][1];
System.out.println("获取指定下标上的元素:" + str);
for(String[] ss:names){
for(String element:ss){
System.out.println(element);
}
}
}
}