当前位置:  首页>> 技术小册>> Java语言基础4-数组详解

9.1 概述

  • 二维数组本质上就是元素为一维数组的数组。
  • 二维数组的标记:[][] 。
  1. int[][] arr; // arr是一个二维数组,可以看成是int[]一维数组的一个数组

二维数组也可以看成是一个二维表,行和列组成的二维表,只不过这个二维表中的每一行的列数可能不同。但是每一个单元格中的元素的数据类型是一致的,例如,都是 int、String 等类型。

9.2 二维数组的语法
9.2.1 动态初始化1
语法:

  1. 数据类型[][] 数组名 = new 数据类型[m][n]
  • 解释:
    • m 表示这个二维数组有多少个一维数组。换言之,一共多少行。
    • n 表示每个一维数组中的元素有多少个,换言之,一共有多少个单元格。
    • 二维数组的访问和赋值方式和一维数组类似。
  1. // 二维数组中元素的访问
  2. 数据类型 元素名 = 二维数组名[行下标][列下标];
  1. // 二维数组中元素的赋值
  2. 二维数组名[行下标][列下标] = 值;

内存图:

示例:

  1. /**
  2. * 二维数组的动态初始化
  3. *
  4. * @author maxiaoke.com
  5. * @version 1.0
  6. */
  7. public class ArrayTest6 {
  8. public static void main(String[] args) {
  9. // 定义了一个名称为arr的二维数组
  10. // arr中有3个一维数组,每个一维数组中有2个元素。每个一维数组的名称是:arr[0]、arr[1]、arr[2]、
  11. int[][] arr = new int[3][2];
  12. // 二维数组元素的访问
  13. System.out.println("二维数组的元素的访问 = " + arr[0][0]);
  14. System.out.println("二维数组的元素的访问 = " + arr[0][1]);
  15. System.out.println("二维数组的元素的访问 = " + arr[1][0]);
  16. System.out.println("二维数组的元素的访问 = " + arr[1][1]);
  17. System.out.println("二维数组的元素的访问 = " + arr[2][0]);
  18. System.out.println("二维数组的元素的访问 = " + arr[2][1]);
  19. // 二维数组中的元素赋值
  20. arr[0][0] = 1;
  21. arr[0][1] = 2;
  22. arr[1][0] = 3;
  23. arr[1][1] = 4;
  24. arr[2][0] = 5;
  25. arr[2][1] = 6;
  26. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[0][0]);
  27. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[0][1]);
  28. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][0]);
  29. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][1]);
  30. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][0]);
  31. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][1]);
  32. }
  33. }

9.2.2 动态初始化2

  • 语法:
    1. 数据类型[][] 数组名 = new 数据类型[m][];
  1. 数组名[行下标] = new 数据类型[n];
  • 解释:
    • m 表示这个二维数组有多少个一维数组,每个一维数组的元素的默认初始化值是 null 。
    • n 表示给对一维数组进行初始化。
  • 内存示意图:

示例:

  1. /**
  2. * 二维数组的动态初始化
  3. *
  4. * @author maxiaoke.com
  5. * @version 1.0
  6. */
  7. public class ArrayTest7 {
  8. public static void main(String[] args) {
  9. // 动态创建一个二维数组
  10. int[][] arr = new int[3][];
  11. arr[0] = new int[1];
  12. arr[1] = new int[2];
  13. arr[2] = new int[3];
  14. // 二维数组的元素的访问
  15. System.out.println("二维数组的元素的访问 = " + arr[0][0]);
  16. System.out.println("二维数组的元素的访问 = " + arr[1][0]);
  17. System.out.println("二维数组的元素的访问 = " + arr[1][1]);
  18. System.out.println("二维数组的元素的访问 = " + arr[2][0]);
  19. System.out.println("二维数组的元素的访问 = " + arr[2][1]);
  20. System.out.println("二维数组的元素的访问 = " + arr[2][2]);
  21. // 二维数组中元素的赋值
  22. arr[0][0] = 1;
  23. arr[1][0] = 2;
  24. arr[1][1] = 3;
  25. arr[2][0] = 4;
  26. arr[2][1] = 5;
  27. arr[2][2] = 6;
  28. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[0][0]);
  29. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][0]);
  30. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][1]);
  31. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][0]);
  32. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][1]);
  33. System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][2]);
  34. }
  35. }

9.2.3 静态初始化
语法:

  1. 数据类型[][] 数组名 = new int[][]{{元素1,元素2,...},{元素1,元素2,...},{元素1,元素2,...},...}
  2. 数据类型[][] 数组名 = {{元素1,元素2,...},{元素1,元素2,...},{元素1,元素2,...},...}
  3. 数据类型[][] 数组名 ;
  4. 数组名 = new int[][]{{元素1,元素2,...},{元素1,元素2,...},{元素1,元素2,...},...}

示例:

  1. /**
  2. * 二维数组的静态初始化
  3. *
  4. * @author maxiaoke.com
  5. * @version 1.0
  6. */
  7. public class ArrayTest8 {
  8. public static void main(String[] args) {
  9. // 二维数组的静态初始化
  10. int[][] arr = new int[][]{{1,2}, {2, 3}, {4, 5, 6}};
  11. // 二维数组元素的访问
  12. System.out.println("二维数组的元素的访问 = " + arr[0][0]);
  13. System.out.println("二维数组的元素的访问 = " + arr[0][1]);
  14. System.out.println("二维数组的元素的访问 = " + arr[1][0]);
  15. System.out.println("二维数组的元素的访问 = " + arr[1][1]);
  16. System.out.println("二维数组的元素的访问 = " + arr[2][0]);
  17. System.out.println("二维数组的元素的访问 = " + arr[2][1]);
  18. System.out.println("二维数组的元素的访问 = " + arr[2][2]);
  19. }
  20. }

9.3 二维数组的名称以及表达方式

二维数组的长度/行数:

  1. 二维数组名.length

二维数组的某一行:

  1. // 行下标的范围是[0,二维数组名.length-1]
  2. 二维数组名[行下标]

二维数组的某一行的列数:

  1. // 二维数组的每一行是一个一维数组
  2. 二维数组名[行下标].length

二维数组的某一个元素:

  1. 二维数组名[行下标][列下标]

9.4 二维数组的遍历

  • 语法:
  1. for(int i=0; i<二维数组名.length; i++){
  2. for(int j=0; j<二维数组名[i].length; j++){
  3. System.out.print(二维数组名[i][j]);
  4. }
  5. System.out.println();
  6. }

示例:

  1. /**
  2. * 二维数组的遍历
  3. *
  4. * @author maxiaoke.com
  5. * @version 1.0
  6. */
  7. public class ArrayTest9 {
  8. public static void main(String[] args) {
  9. int[][] arr = new int[][]{{1, 2}, {2, 3}, {4, 5, 6}};
  10. for (int i = 0; i < arr.length; i++) {
  11. for (int j = 0; j < arr[i].length; j++) {
  12. System.out.print(arr[i][j] + "\t");
  13. }
  14. System.out.println();
  15. }
  16. }
  17. }

该分类下的相关小册推荐: