03-方法与数组
对应原始资料:
day04-方法、day08-数组
一、方法
1. 方法的定义与调用
方法是把一段代码打包起来,提高复用性。
java
public static 返回值类型 方法名(参数列表) {
// 方法体
return 结果; // void 时可省略,或写 return;
}示例:
java
public static int add(int a, int b) {
return a + b;
}调用:int sum = add(3, 5);
2. 方法的重载(Overload)
同一个类中,方法名相同、参数列表不同(个数、类型、顺序不同),与返回值无关。
java
public static int sum(int a, int b) { return a + b; }
public static int sum(int a, int b, int c) { return a + b + c; }
public static double sum(double a, double b) { return a + b; }3. 方法的参数传递机制
- 基本类型作为参数:传递的是数据值的副本,方法内修改不影响外部。
- 引用类型(数组、对象)作为参数:传递的是地址值,方法内通过地址修改元素会影响外部。
java
public static void change(int[] arr) { arr[0] = 100; }
int[] arr = {1, 2, 3};
change(arr);
System.out.println(arr[0]); // 1004. 方法的递归
方法自己调用自己,必须有出口,否则栈溢出。
java
// 求 n!
public static int factorial(int n) {
if (n == 1) return 1; // 出口
return n * factorial(n - 1);
}二、数组
1. 数组的定义
数组是存储同一种类型多个元素的容器,长度固定。
java
// 静态初始化
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[]{1, 2, 3};
// 动态初始化(默认值:int=0, double=0.0, boolean=false, 引用=null)
int[] arr3 = new int[5];2. 数组的访问
- 索引从 0 开始,范围
[0, length - 1]。 - 越界访问会抛出
ArrayIndexOutOfBoundsException。
3. 数组的遍历
java
int[] arr = {11, 22, 33, 44};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}4. 数组的常见操作
求最大值:
java
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) max = arr[i];
}遍历求和、求平均:
java
int sum = 0;
for (int x : arr) sum += x;
double avg = (double) sum / arr.length;统计个数:如统计数组中能被 3 整除的元素个数。
5. 数组的内存图(理解)
| 区域 | 存放 |
|---|---|
| 栈 Stack | 方法运行、局部变量 |
| 堆 Heap | new 出来的内容(数组、对象) |
int[] arr = new int[3];:栈中的arr变量保存堆中数组的地址。- 两个变量指向同一个数组时,一个修改会影响另一个。
6. 二维数组
java
int[][] arr = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9}};
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();
}7. 经典案例:动漫美女拼图
原始资料 day09-动漫美女拼图 是一个数组 + 随机打乱 + GUI 的小项目,可作为综合练习。
练习建议
- 写方法:判断一个数是不是素数、是不是闰年。
- 用方法重载实现多种求和。
- 数组求最大值、最小值、反转。
- 实现冒泡排序(进阶版见 02 模块)。
- 二维数组打印杨辉三角。