多维数组可以看成以数组为元素的数组
二维数组的定义
第一种方式: int[][] arr = new int[3][4];
第二种方式:int[][] arr = new int[3][];
第三种方式: int[][] arr = {{1,2},{3,4,5,6},{7,8,9}
class Demo03
{
public static void main(String[] args)
{
//1.定义二维数组
int[][] arr=new int[2][3];
arr[1][0]=5;
arr[1][1]=6;
System.out.println(arr[1][0]);//5
System.out.println(arr[1][1]);//6
System.out.println(arr[0][0]);//0
System.out.println(arr[1]);//0 地址
System.out.println(arr);//地址
}
}
class Demo04
{
public static void main(String[] args)
{
//2.定义数组
int[][] arr=new int[3][];
arr[0]=new int[3];
arr[1]=new int[2];
arr[2]=new int[1];
arr[0][0]=1;
arr[1][0]=2;
//遍历
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();
}
}
}
class Demo05
{
public static void main(String[] args)
{
//3.数组定义
String[][] arr={
{"hello","小红帽"},
{"b","c","a"},
{"章鱼哥","小丸子"}
};
//遍历
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
}
}
内存图

二维数组元素遍历求和
获取数组长度:
a.length获取的二维数组第一维数组的长度,a[0].length才是获取第二维第一个数组长度。
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
sum+=arr[i][j];
}
}
数组异常
内存图

数组越界异常
每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错

空指针异常
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常,接下来通过一个案例来演示这种异常,如下所示

class Demo02
{
public static void main(String[] args)
{
int[] arr={4,5,6};
//数组一旦创建,长度不可变(不允许再添加或者删除元素)
//java.lang.ArrayIndexOutOfBoundsException
//数组越界异常:访问了超出数组长度的元素
//修改代码
//System.out.println(arr[2]);
arr=null;
//java.lang.NullPointerException
//你访问了空的对象或者容器
//修改代码(检测null的位置,加判断)
if(arr!=null){
System.out.println(arr[2]);
}
}
}