ps:本章主要讲数组、二维数组、变量
一、数组
数组是一个数据容器,可用来存储一批同类型的数据
🔑:注意
类也可以是一个类的数组
public class Main {
public static class Student {
String name;
int age; // 移除 unsigned
int id;
// 构造方法
public Student(String name, int age, int id) {
this.name = name;
this.age = age;
this.id = id;
}
// 重写 toString 方法
@Override
public String toString() {
return "Student{name='" + name + "', age=" + age + ", id=" + id + "}";
}
}
public static void main(String[] args) {
// 正确初始化 Student 数组
Student[] s1 = new Student[]{
new Student("张无忌", 18, 1),
new Student("赵敏", 20, 2)
};
System.out.println(s1[0].toString());
System.out.println(s1[1].toString());
}
}
二、二维数组
二维数组的初始化
1. 指定行、列大小的动态初始化
int[][] arr = new int[3][5];
- 这里创建了一个有 3 行、每行 5 列的整型二维数组。
- 所有元素会被初始化为默认值(整型默认为
0
)。
2. 静态初始化(直接用大括号赋值)
2.1 不使用 new
关键字
int[][] arr = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
- 这种方式可以在声明时直接赋初值。
- 每一行(内部的花括号)可以视为一维数组。
2.2 使用 new
关键字 + 大括号
int[][] arr = new int[][] { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
- 和上一种方式本质相同,带
new
关键字时需要new int[][]
,再紧跟大括号初始化。 - 这种方式在某些场景下更显式。
3. “行”大小固定,“列”大小可变(不规则数组)
int[][] arr = new int[3][]; arr[0] = new int[2]; // 第 1 行有 2 列 arr[1] = new int[4]; // 第 2 行有 4 列 arr[2] = new int[3]; // 第 3 行有 3 列
- 这种初始化方式先确定“行数”(外层数组长度),然后再分别为每行分配不同大小的一维数组。
- 最终就形成了所谓的“拉格数组(Ragged Array)”或“不规则数组”。
4. 同时使用动态与静态
其实这可以视作前面几种的组合:一部分行用动态方式初始化,一部分行用静态方式初始化。通常使用场景不多,但语法上是可行的。
示例:
java
复制编辑
int[][] arr = new int[2][]; arr[0] = new int[] {1, 2, 3}; arr[1] = new int[] {4, 5, 6, 7};
- 第 1 行固定分配
{1, 2, 3}
- 第 2 行固定分配
{4, 5, 6, 7}
二维数组的遍历
for(int i = 0; i < arr.length(); i++)
for (int j = 0; j < arr[i].length(); j++)
System.out.print(arr[i][j] + "\t");//制表符
System.out.println();