方法基础
方法是组织代码的基本单元,本课学习Java中方法的定义和使用。
什么是方法
方法是一段完成特定功能的代码块,可以被重复调用。
方法的好处
| 好处 | 说明 |
|---|---|
| 代码复用 | 写一次,多次调用 |
| 逻辑清晰 | 把复杂问题分解成小方法 |
| 易于维护 | 修改只需改一处 |
方法定义
语法
JAVA
修饰符 返回类型 方法名(参数列表) {
// 方法体
return 返回值;
}
示例:简单方法
JAVA
public class MethodDemo {
// 定义方法
public static void sayHello() {
System.out.println("Hello, Java!");
}
public static void main(String[] args) {
// 调用方法
sayHello();
sayHello(); // 可以多次调用
}
}
输出:
TEXT
Hello, Java!
Hello, Java!
方法参数
参数让方法可以接收外部数据。
无参方法
JAVA
public static void printLine() {
System.out.println("================");
}
有参方法
JAVA
public static void greet(String name) {
System.out.println("Hello, " + name + "!");
}
多个参数
JAVA
public static int add(int a, int b) {
return a + b;
}
示例:方法参数
JAVA
public class ParamDemo {
public static void greet(String name) {
System.out.println("Hello, " + name + "!");
}
public static int add(int a, int b) {
return a + b;
}
public static void printInfo(String name, int age) {
System.out.println("姓名:" + name + ",年龄:" + age);
}
public static void main(String[] args) {
greet("Alice"); // Hello, Alice!
greet("Bob"); // Hello, Bob!
int sum = add(3, 5);
System.out.println("3 + 5 = " + sum); // 8
printInfo("张三", 25); // 姓名:张三,年龄:25
}
}
返回值
方法可以返回一个结果给调用者。
有返回值
JAVA
public static int max(int a, int b) {
return (a > b) ? a : b;
}
无返回值(void)
JAVA
public static void printMax(int a, int b) {
int max = (a > b) ? a : b;
System.out.println("最大值:" + max);
}
示例:返回值
JAVA
public class ReturnDemo {
public static int max(int a, int b) {
return (a > b) ? a : b;
}
public static double average(int a, int b) {
return (a + b) / 2.0;
}
public static boolean isEven(int num) {
return num % 2 == 0;
}
public static void main(String[] args) {
System.out.println("max(3, 5) = " + max(3, 5)); // 5
System.out.println("avg(3, 5) = " + average(3, 5)); // 4.0
System.out.println("isEven(4) = " + isEven(4)); // true
System.out.println("isEven(7) = " + isEven(7)); // false
}
}
⚠️ 注意: void方法不能使用
return 值,但可以用return;提前结束方法。
方法重载
方法重载是指同一个类中,方法名相同但参数列表不同。
重载规则
| 规则 | 说明 |
|---|---|
| 方法名相同 | 必须一样 |
| 参数个数不同 | 可以 |
| 参数类型不同 | 可以 |
| 参数顺序不同 | 可以 |
| 返回类型不同 | 不算重载 |
示例:方法重载
JAVA
public class OverloadDemo {
public static int add(int a, int b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
public static double add(double a, double b) {
return a + b;
}
public static String add(String a, String b) {
return a + b;
}
public static void main(String[] args) {
System.out.println(add(1, 2)); // 3
System.out.println(add(1, 2, 3)); // 6
System.out.println(add(1.5, 2.5)); // 4.0
System.out.println(add("Hello", "World")); // HelloWorld
}
}
可变参数
可变参数允许方法接受不定数量的参数。
语法
JAVA
public static int sum(int... numbers) {
int total = 0;
for (int num : numbers) {
total += num;
}
return total;
}
示例:可变参数
JAVA
public class VarargsDemo {
public static int sum(int... numbers) {
int total = 0;
for (int num : numbers) {
total += num;
}
return total;
}
public static void printNames(String... names) {
for (String name : names) {
System.out.println(name);
}
}
public static void main(String[] args) {
System.out.println(sum(1, 2)); // 3
System.out.println(sum(1, 2, 3)); // 6
System.out.println(sum(1, 2, 3, 4, 5)); // 15
printNames("Alice", "Bob", "Charlie");
}
}
⚠️ 注意: 可变参数必须是方法的最后一个参数,一个方法只能有一个可变参数。
参数传递
Java的参数传递是"值传递"。
基本类型传递
JAVA
public static void changeValue(int num) {
num = 100; // 只修改局部变量
}
public static void main(String[] args) {
int x = 10;
changeValue(x);
System.out.println(x); // 10,没有改变
}
引用类型传递
JAVA
public static void changeArray(int[] arr) {
arr[0] = 100; // 修改数组内容
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
changeArray(arr);
System.out.println(arr[0]); // 100,被修改了
}
💡 理解: 基本类型传递的是值的副本,引用类型传递的是地址的副本。
方法调用栈
方法调用时,会在栈内存中创建栈帧。
JAVA
public static void main(String[] args) {
methodA();
}
public static void methodA() {
methodB();
}
public static void methodB() {
System.out.println("Hello");
}
调用顺序:main → methodA → methodB → 执行完毕 → 返回methodA → 返回main
❓ 常见问题
Q 方法和函数有什么区别?
A 在Java中,方法必须属于类。其他语言中独立的函数,在Java中都是类的静态方法。
Q 什么时候用静态方法?
A 当方法不需要访问对象的状态时,用静态方法。工具类的方法通常是静态的。
Q return可以省略吗?
A void方法可以省略return(会自动结束)。有返回值的方法必须有return。
📖 小节
- 方法是组织代码的基本单元,可以重复调用
- 方法可以有参数和返回值
- 方法重载:同名方法,参数列表不同
- 可变参数允许不定数量的参数
- Java是值传递
📝 作业
- 方法练习: 编写方法计算两个数的最大值、最小值、平均值
- 重载练习: 编写多个print方法,支持不同类型参数
- 可变参数: 编写方法计算任意个数的平均值
下一课
下一课我们将学习 方法进阶,了解递归、静态方法和方法引用。



