二维数组:
概念:二维数组的元素就是一个一维数组,以及一维数组对用的长度
常见定义形式:
int x ,y ;
int[] x , y ;x是一个一维数组,y是一个一维数组
int[] x , y[] ;x是一个一维数组,y是一个二维数组
int[][] x ; x是一个二维数组
定义格式1:
动态初始化
数据类型[][] 数组名称 = new 数据类型[m][n] ; (推荐第一种)
数据类型 数组名称[][] = new 数据类型[m][n] ;
举例:
int[][] arr = new int[3][2] ;
等号左边:
int:表示一个int类型
[][]:表示定义二维数组
arr :数组名称
等号右边:
new :在堆内存中创建对象
int :创建int类型数组
[3] :表示当前二维数组中有3个一维数组
[2] :这三个一维数组中每一个都有2个元素
class Array2Demo{
public static void main(String[] args){
//定义一个二维数组,并且动态初始化
int[][] arr = new int[3][2] ;
System.out.println(arr) ;//[[I@十六进制数据 [[I@6d06d69c
//存在3个一维数组 系统默认初始化:null
//第一个一维数组
System.out.println(arr[0]) ; //[I@7852e922
System.out.println(arr[1]) ;//[I@4e25154f
System.out.println(arr[2]) ;//[I@70dea4e
//访问二维数组中第一个一维数组的第一个元素
System.out.println(arr[0][0]) ;//0
//赋值
arr[0][0] = 10 ;
arr[0][1] = 20 ;
arr[2][1] = 30 ;
System.out.println(arr[0][0]) ;//10
System.out.println(arr[0][1]) ;//20
System.out.println(arr[1][0]) ;//0
System.out.println(arr[1][1]) ;//0
System.out.println(arr[2][0]) ;//0
System.out.println(arr[2][1]) ;//30
}
}
定义格式2:*
int arr[][]=new int[3][];
arr[0]=new int[2];
当前二维数组中有m个一维数组,但是没有给定每一个一维数组的长度,长度可以动态给定!
class Array2Demo2{
public static void main(String[] args){
//格式2:定义二维数组
int[][] arr = new int[3][] ;
System.out.println(arr); //[[I@6d06d69c
//访问每一个一维数组的数组名称:arr[0],arr[1],arr[2]
System.out.println(arr[0]) ;//null
System.out.println(arr[1]) ;//null
System.out.println(arr[2]) ;//null
//动态给定一维数组中长度
arr[0] = new int[2] ;
arr[1] = new int[3] ;
arr[2] = new int[1] ;
System.out.println(arr[0]) ;//[I@7852e922
System.out.println(arr[1]) ;//[I@4e25154f
System.out.println(arr[2]) ;//[I@70dea4e
System.out.println("---------------------") ;
arr[0][0] = 10 ;
arr[1][1] = 50 ;
arr[2][0] = 100 ;
System.out.println(arr[0][0]) ;
System.out.println(arr[1][1]) ;
System.out.println(arr[2][0]) ;
//System.out.println(arr[2][1]) ;//java.lang.ArrayIndexOutOfBoundsException :数组角标越界异常
}
}
定义格式3:
int arr[][]={{1,2,3},{4,5,6}};