数组的维数:
二维数组:存储元素是一维数组的数组
定义格式:
数剧类型 [][]数组名=new 数据类型[二位数组的长度/一维数组的个数][一维数组类型的长度]
int [][] arr=new int int[2][3];
int [][] arr1=new int[3][]; //相当于声明了三个一维数组
int [][] arr2={{1,2,3},{2,3}};//初始化二维数组
**null的本身也是一个地址值,比较特殊的地址值,不指向任何的地址空间,表示引用的值,在底层的实现是还是一个编码值,进行转换**
空指针出现的原因便是由于null是引用类型,但是不指向任何的空间,什么东西都没有,从而产生的空指针异常
/*
数组多维
二维数组的中存储的是一维数组这种的地址值,
再通过一维数组的地址值找到一维数组,
内存不存在嵌套的,不能嵌套,所以存储的是引用类型的地址值
引用类型的默认值都是null---默认给定的null地址值,但是没有任何的指向
*/
class ArrayDemo{
public static void main(String[] args){
//第一种定义方式
int [][]arr=new int[3][2];
//数组名--[[I@15db9742--二维数组的地址值
System.out.println(arr);
//[[I@15db9742
//[I@6d06d69c--一维数组的地址值
System.out.println(arr[0]);
//二维数组的第一个值--第一个一维数组的第一个值
System.out.println(arr[0][0]);
//第二种定义方式
int [][]arr1=new int[2][];//声明了两个一维数组,代表给了地址值
//null() null不指向任何的内存地址(但本身是一个地址值)
System.out.println(arr1[0]);
//NullPointerException
//System.out.println(arr1[0][0]);
/*空指针异常的出现原因
从地址值为null的引用里获取信息就开始报错
*/
//第三种定义格式
int [][] arr2={{1,2,3},{2,3}};//初始化二维数组
//ArrayIndexOutOfBoundsException 数组越界常,超过数组的长度
///System.out.println(arr2[0][3]);
}
}