二维数组
二维数组本质是一维数组的叠加,二维数组的所有元素都是引用类型,这些元素分别指向不同的一维数组,其内存结构和之前介绍的一维数组类似。例如,二维数组 arr 指向了由 arr[0]、arr[1]和 arr[2] 组成的数组,而 arr[0]、arr[1]和 arr[2] 自身也是一维数组。也就是说,arr[0]、arr[1]和 arr[2] 三者既是二维数组的数组元素,又各自是一个独立的一维数组,如果把地址看做钥匙,引用(可认为是变量名)可看做钥匙盒。
arr[0]、arr[1]和arr[2] 是二维数组的三个元素,这三个钥匙盒是并排的。
arr[0]、arr[1]和arr[2] 所引用的是三个独立的数组,由于 new 操作符总是开辟新的空间且无法保证连续,arr[0]、arr[1]和arr[2] 中的“钥匙”(即地址)不是连续的,如图所示。
二维数组的赋值和使用与一维数组类似,都是通过下标访问数组元素,不同的是一维数组只有一个下标,而二维数组有两个下标,分别表示该元素所在数组的行数和列数。例如 arr[0][3],其表示的是数组 arr 中第 1 行第 4 列的元素。
在声明并创建数组(int[][] arr = new int[3][4];)之后,可使用的数组下标范围为:arr[0][0]~arr[2][3],这一点和一维数组类似,需要注意数组下标越界的问题。
同一维数组一样,二维数组在创建的时候也可以初始