个人技术分享

二维数组

概念:二维数组本质也是一维数组,只是每个空间中存储的是一维数组。

例如: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);
			}
		}
	}
}