Java基础
二维数组
1.动态初始化
- 格式:数据类型[][] 数组名 = new 数据类型[m][n]
- m:代表这个二维数组能存多少个一维数组。
- n:代表每个一维数组能存多少个元素。
- 例如:int[][] arr = new int[3][3];
public class Demo {
public static void main(String[] args) {
int[][] arr =new int[3][3];
System.out.println(arr);
}
}
[[:代表是二维数组
I:代表int
@:分隔符
后面的是十六进制内存地址
赋值和遍历
public class Demo {
public static void main(String[] args) {
int[][] arr =new int[3][3];
arr[0][0]=11;
arr[0][1]=22;
arr[0][2]=33;
arr[1][0]=44;
arr[1][1]=55;
arr[1][2]=66;
arr[2][0]=77;
arr[2][1]=88;
arr[2][2]=99;
System.out.println(arr[0][0]);//11
System.out.println(arr[0][1]);//22
System.out.println(arr[0][2]);//33
System.out.println(arr[1][0]);//44
System.out.println(arr[1][1]);//55
System.out.println(arr[1][2]);//66
System.out.println(arr[2][0]);//77
System.out.println(arr[2][1]);//88
System.out.println(arr[2][2]);//99
}
}
跟一维数组相同
2.静态初始化
完整格式:数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2…} , {元素1, 元素2…} …};
简化格式: 数据类型[][] 变量名 = { {元素1, 元素2…} , {元素1, 元素2…} …};
public class Demo {
public static void main(String[] args) {
int[][] arr = {{11,22,33},{44,55,66},{77,88,99}};
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]);
}
}
内存图
public class Demo {
public static void main(String[] args) {
int[] arr1 ={11,22,33};
int[] arr2 ={44,55};
int[] arr3 ={66,77,88,99,100};
int[][] arr=new int[3][3];
//arr[2][4]=100;//索引越界异常ArrayIndexOutOfBoundsException
arr[0]=arr1;//替换原来的数组地址
arr[1]=arr2;
arr[2]=arr3;
System.out.println(arr[2][4]);//100
}
}
3.二维数组的操作
二维数组遍历
已知一个二维数组 arr = {{11, 22, 33}, {33, 44, 55}}; 遍历该数组,取出所有元素并打印
public class Demo {
public static void main(String[] args) {
int[][] arr = {{11, 22, 33}, {33, 44, 55}};
for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
System.out.print(arr[i][i1]+" ");
}
}
}
}
求二维数组所有数据的和
public class Demo {
public static void main(String[] args) {
int[][] arr = {{11, 22, 33}, {33, 44, 55}};
int sum=0;
for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
sum+=arr[i][i1];
}
}
System.out.println(sum);//198
}
}
求二维数组中的最大值
public class Demo {
public static void main(String[] args) {
int[][] arr = {{11, 22, 33}, {33, 44, 55}};
int max=arr[0][0];
for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
if (max<arr[i][i1]){//max与数组中每一个值比较
max=arr[i][i1];
}
}
}
System.out.println(max);//55
}
}
求二维数组中每一个一维数组的最大值
public class Demo {
public static void main(String[] args) {
int[][] arr = {{11, 22, 33}, {33, 44, 55}};
for (int i = 0; i < arr.length; i++) {//第一层循环取出的是每个一维数组的地址值
int max=arr[i][0];//取出每个一维数组中的第一个元素
for (int i1 = 0; i1 < arr[i].length; i1++) {//第二层循环根据外循环取出的一维数组的地址值来取他的元素
if (max<arr[i][i1]){//max与数组中每一个值比较
max=arr[i][i1];
}
}
System.out.println(max);//外层循环执行一次就相当于比较出一个一维数组的最大值 33 55
}
}
}