目录
1. 从定义形式上看 int[][] 2, 可以这样理解,原来的一维数组的每个元素是一维数组,就构成二维数组
int[] x,y[];//下面能通过编译的是说明:x是int 类型的一维数组,y是int 类型的二维数组
已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序,比如:* 【10, 12,45,90】,添加23后,数组为【10,12,23,45,90】
随机生成10个整数(1-100的范围)保存到数组;并倒序打印以及求平均值、求最大值和最大值的下标;并查找里面是否有8;
二维数组
1. 从定义形式上看 int[][]
2, 可以这样理解,原来的一维数组的每个元素是一维数组,就构成二维数组
练习:请用二维数组输出一下图形
思路分析:
1. arr.length 表示二维数组的每个元素
2. 使用for循环遍历二维数组的每个元素(数组)
3. arr[ i ] 表示二维数组 的第 i+1个元素 ,比如 arr[ 0 ] :二维数组 的第一个元素
4.arr [ i ].length 得到对应的每个一维数组的长度
代码实现:
//输出二维图形
for (int i=0;i< arr.length;i++){//遍历二维数组的每个元素
//遍历二维数组的每个元素(数组)
//老韩解读:
//1. arr[i] 表示二维数组的第i+1个元素,比如arr[0]:二维数组的第一个元素
//2. arr[i].length 得到对应的每个一维数组的长度
for (int j=0;j< arr[i].length;j++){
System.out.print(arr[i][j]+"");//输出了一维数组。[i]表示第几个一维数组,[j]
表示第几个一维数组的第几个值
}
System.out.println();//换行
}
结果:
二维数组的细节和注意事项:
使用方式1: 动态初始化
1. 语法:类型【】【】 数组名=new 类型【大小】【大小】
2. 比如:int a[][]=new int[2][3]
下面是使用演示:
int arr[][] = new int[2][3];
arr[1][1]=8;
//遍历arr数组
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();//换行
}
结果:
下面使用内存分析图来分析上面的代码:
二维数组的内存分析图:(非常重要)
分析: 二维数组指向一个空间,但是这个空间并不直接存放数据,为什么不直接存放数据,因为这个空间里面存放的每个元素是一维数组,而不是具体的数据,所以它要追溯一维数组的引用存放的数据。
使用方式2: 动态初始化
1. 先声明:类型 数组名【】【】;
2. 再定义(开辟空间) 数组名=new 类型【大小】【大小】
3. 赋值(有默认值,比如int 类型的就是0)
下面是使用演示(代码与“使用方式1”的一致,只是“先声明,再定义”):
int arr[][];//声明二维数组
arr=new int[2][3];//再开空间
arr[1][1]=8;
//遍历arr数组
for (int i=0;i<arr.length;i++){
for (int j=0;j< arr[i].length;j++){
System.out.print(arr[i