二维数组的概述
1.概念和代码
package day06;
/*
二维数组的使用
1.理解:对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
其实,从数组底层的运行来看,其实没有多维数组。
2.二维数组的使用
1>二维数组的声明和初始化
2>如何调用数组的指定位置的元素
3>如何获取数组的长度
4>如何遍历数组
5>数组元素的默认初始化值
规定:二维数组分为外层数组的元素,内层数组的元素
int[][] arr = new int[4][3];
外层元素:arr[0],arr[1]等
内层元素:arr[0][0],arr[1][2]等
针对初始化方式一:比如:int[][] arr=new int[4][3];
外层元素的初始化值为:地址值
内层元素的初始化值为:与一维数组初始化情况相同
针对初始化方式二:比如:int[][] arr=new int[4][];
外层元素的初始化值为:null
内层元素的初始化值为:不能调用,否则报错
6>数组的内存解析
拓展:1.数据结构:
1>数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
2>数据的存储结构
>线性表:顺序表(比如:数组)、链表、栈、队列
>树形结构:二叉树
>图形结构
2.算法:
>排序算法
>搜索算法
3.数组中涉及的常见算法
>数组元素的赋值(杨辉三角、回形数等)
>求数值型数组中元素的最大值、最小值、平均数、总和等
>数组的复制、反转、查找(线性查找、二分法查找)
>数组元素的排序算法
*/
public class ArrayTest2 {
public static void main(String[] args) {
//1.二维数组的声明和初始化
int[] arr=new int[]{1,2,3}; //一维数组
//静态初始化
int[][] arr1=new int[][]{{1,2,3},{4,5},{6,7,8}};
//动态初始化1
String[][] arr2=new String[3][2];
//动态初始化2
String[][] arr3=new String[3][];
//也是正确的写法
int[] arr4[]=new int[][]{{1,2,3},{4,5},{6,7,8}};
int[] arr5[]={{1,2,3},{4,5},{6,7,8}};
//错误的情况
// String[][] arr4=new String[][4];
// String[4][3] arr5=new String[][];
// int[][] arr6=new int[4][3]{{1,2,3},{4,5},{6,7,8}};
//2.如何调用数组的指定位置的元素
System.out.println(arr1[0][1]); //2
System.out.println(arr2[1][1]); //null
arr3[1]=new String[4];
System.out.println(arr3[1][0]);
//3.如何获取数组的长度
System.out.println(arr4.length); //3
System.out.println(arr4[0].length); //3
System.out.println(arr4[1]); //2
//4.如何遍历数组
for (int i = 0; i < arr4.length; i++) {
for (int j = 0; j < arr4[i].length; j++) {
System.out.print(arr4[i][j]+" ");
}
System.out.println();
}
//5.数组元素的默认初始化值
int[][] arr6=new int[4][3];
System.out.println(arr6[0]); //地址值:[I@677327b6 含义(一维数组,int类型 地址为677327b6)
System.out.println(arr6[0][0]); //0
System.out.println(arr6); //地址值:[[I@14ae5a5 含义(二维数组,int类型 地址为14ae5a5)
float[][] arr7=new float[4][3];
System.out.println(arr7[0]); //地址值
System.out.println(arr7[0][0]); //0.0
String[][] arr8=new String[4][2];
System.out.println(arr8[1]); //地址值:[Ljava.lang.String;@6d6f6e28 含义(一维数组,包名,地址为6d6f6e28)
System.out.println(arr8[1][1]); //null
double[][] arr9=new double[4][];
System.out.println(arr9[1]); //null
System.out.println(arr9[1][0]); //报错(空指针异常)
}
}
2.运行结果
2
null
null
3
3
[I@1540e19d
1 2 3
4 5
6 7 8
[I@677327b6
0
[[I@14ae5a5
[F@7f31245a
0.0
[Ljava.lang.String;@6d6f6e28
null
null
Exception in thread "main" java.lang.NullPointerException
at day06.ArrayTest2.main(ArrayTest2.java:94)