什么是二维数组?
二维数也是一种容器,不同于一维数组,该容器存储的都是一维数组容器
二维数组
二维数组组定义格式
-
格式1: 数据类型[ ] [ ] 变量名
-
范例:int [ ] [ ] arr;
-
格式2: 数据类型 变量名[ ] [ ];
-
格式3: 数据类型[ ] 变量名 [ ];
-
范例: int ar[ ] [ ];
-
范例: int arr[ ];
package dome1;
public class test6 {
/*
动态初始化格式:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多个元素
*/
public static void main(String[] args) {
//数据类型[] [] 变量名 = new 数据类型[m][n];
int[][] arr = new int[3][3];
/*
[[I@1b6d3586
@: 分隔符
1b6d3586 : 十六进制内存地址
I : 数组中存储的
[[ : 几个中括号就代表的是几维数组
*/
System.out.println(arr);
/*
二维数组存储存储一堆数组的时候,存储的是一堆数组的内存地址
*/
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[0][0]);
System.out.println(arr[1][1]);
System.out.println(arr[2][2]);
//向二维数组种存储元素
arr[0][0] = 11;
arr[0][1] = 22;
arr[0][2] = 11;
arr[1][0] = 11;
arr[1][1] = 22;
arr[1][2] = 11;
arr[2][0] = 11;
arr[2][1] = 22;
arr[2][2] = 11;
//从二维数组中取出元素并打印
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
System.out.println(arr[0][2]);
System.out.println(arr[1][0]);
System.out.println(arr[1][1]);
System.out.println(arr[1][2]);
System.out.println(arr[2][0]);
System.out.println(arr[2][1]);
System.out.println(arr[2][2]);
}
}
二维数组访问元素的细节问题
package dome1;
public class test7 {
/*
问题: 二维数组中存储的是一维数组,那能不能存入 [提前创建好的一维数组] 呢 ?
*/
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[0] = arr1;
arr[1] = arr2;
arr[2] = arr3;
System.out.println(arr[1][2]);
System.out.println(arr[2][3]);
}
}
做了内存地址的替换,替换了内存地址
二维数组静态初始化
- 完整格式: 数据类型[ ] [ ] 变量名 = new 数据类型[ ] [ ] { {元素1, 元素2…}, {元素1,元素2…}…};
- 简化格式: 数据类型[ ] [ ] 变量名 = { {元素1, 元素2…}, {元素1,元素2…}…};
package dome1;
public class test8 {
/*
完整格式: 数据类型[ ] [ ] 变量名 = new 数据类型[ ] [ ] { {元素1, 元素2…}, {元素1,元素2…}…};
简化格式: 数据类型[ ] [ ] 变量名 = { {元素1, 元素2…}, {元素1,元素2…}…};
*/
public static void main(String[] args) {
int[] arr1 = {11,22,33};
int[] arr2 = {44,55,66};
int[][] arr = {{11,22,33}, {44,55,66}};
System.out.println(arr[0][2]);
int[][] array = {arr1,arr2};
System.out.println(array[0][2]);
}
}
二维数组-遍历
- 已知一个二维数组 arr = {{11,22,33},{33,44,55}};遍历该数组,取出所有元素并打印
实现思路
- 遍历二维数组,取出里面每一个一维数组
- 在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
for (int i = 0; i < arr.length;i++){
// arr[i] 就是每一个一维数组
for (int j = 0; j < arr[i].length; j++)
}
清晰理解代码
package dome1;
public class test9 {
/*
需求:
已知一个二维数组 arr = {{11,22,33},{33,44,55}};
遍历该数组,取出所有元素并打印
步骤
1.遍历二维数组,取出里面每一个一维数组
2.在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
*/
public static void main(String[] args) {
int[][] arr = {{11,22,33},{33,44,55}};
//1.遍历二维数组,取出里面每一个一维数组
for (int i = 0; i < arr.length; i++){
//System.out.print(arr[i]);
//2.在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
int[] temp = arr[i];
for (int j = 0; j < temp.length; j++) {
System.out.println(temp[j]);
}
}
}
}
实际代码
package dome1;
public class test9 {
/*
需求:
已知一个二维数组 arr = {{11,22,33},{33,44,55}};
遍历该数组,取出所有元素并打印
步骤
1.遍历二维数组,取出里面每一个一维数组
2.在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
*/
public static void main(String[] args) {
int[][] arr = {{11,22,33},{33,44,55}};
//1.遍历二维数组,取出里面每一个一维数组
for (int i = 0; i < arr.length; i++){
//System.out.print(arr[i]);
//2.在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
//int[] temp = arr[i];
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
}
}
package dome1;
public class test10 {
public static void main(String[] args) {
//1.定义求和变量,准备记录最终累加结果
int sum = 0;
//2.使用二维数组来存储数据,每个季度一个一维数组,再将4个一维数组装起来
int[][] arr = { {22,66,44},{77,33,88},{25,45,65},{11,66,99}};
//3.遍历二维数组,获取所有元素,累计求和
for (int i = 0; i < arr.length; i++){
for (int j = 0; j < arr.length; j++) {
sum += arr[i][j];
}
}
//4.输出最终结果
System.out.println(sum);
}
}