1. 二维数组

1.1 概述

  • 1.1.1 定义:二维数组是数组的数组,每个元素本身也是一个数组,可以理解为一张表格
  • 1.1.2 每行长度可以不同:各子数组长度不要求一致,如 {1,2,3}{4,5,6}{7,8,9,10}

1.2 声明与赋值

  • 1.2.1 声明格式数据类型[][] 数组名
  • 1.2.2 静态初始化
  int[][] arr = {
      {1, 2, 3},
      {4, 5, 6},
      {7, 8, 9, 10}
  };
  • 1.2.3 动态初始化(固定每行长度)
  数据类型[][] 数组名 = new 数据类型[二维数组长度][每行数组长度];
  • 1.2.4 动态初始化(不固定每行长度):先确定行数,再逐行赋值
  int[][] ints = new int[3][];
  for (int i = 0; i < ints.length; i++) {
      ints[i] = new int[]{6, 6, 6};
  }

1.3 访问元素

  • 1.3.1 格式数组名[行索引][列索引]
  ints[1][1] = 8; // 修改第2行第2列的元素

1.4 打印二维数组

  • 1.4.1 直接用 Arrays.toString():只能打印外层结构,输出的是每个子数组的地址值,无实际意义
  • 1.4.2 嵌套 for 循环遍历:外层遍历行,内层遍历每行的列,用 print 控制同行输出,println 换行
  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();
  }
  • 1.4.3 逐行用 Arrays.toString():每次打印一整行
  for (int i = 0; i < ints.length; i++) {
      System.out.println(Arrays.toString(ints[i]));
  }

2. 示例代码

package com.itszt.day03;
 
import java.util.Arrays;
 
public class Demo07 {
    public static void main(String[] args) {
        // 静态初始化,每行长度可不同
        int[][] arr = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9, 10}};
 
        // 嵌套 for 循环遍历
        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();
        }
 
        // 动态初始化,逐行赋值
        int[][] ints = new int[3][];
        for (int i = 0; i < ints.length; i++) {
            ints[i] = new int[]{6, 6, 6};
        }
        for (int i = 0; i < ints.length; i++) {
            System.out.println(Arrays.toString(ints[i]));
        }
 
        // 修改指定元素
        ints[1][1] = 8;
        for (int i = 0; i < ints.length; i++) {
            System.out.println(Arrays.toString(ints[i]));
        }
    }
}

3. 总结

知识点核心要点
声明格式数据类型[][] 数组名
静态初始化{{1,2},{3,4}} 每行长度可不同
动态初始化new 类型[行数][] 再逐行赋值
访问元素数组名[行索引][列索引]
遍历方式嵌套 for 循环,外层行内层列
逐行打印Arrays.toString(arr[i])