2.5 方法与函数
方法的基本概念
方法是Java中用于封装特定功能的代码块,通过方法可以实现代码的复用和模块化设计。一个方法包含以下组成部分:
- 访问修饰符:控制方法的可见性(public/protected/private/default)
- 返回值类型:方法执行后返回的数据类型(void表示无返回值)
- 方法名:遵循驼峰命名规范
- 参数列表:传入方法的参数,多个参数用逗号分隔
- 方法体:包含具体执行逻辑的代码块
// 方法定义示例
public int addNumbers(int a, int b) {
return a + b;
}
方法的分类
- 实例方法:属于对象实例,需要通过对象调用
- 静态方法:使用static修饰,属于类本身
- 构造方法:用于创建对象时初始化
- 抽象方法:只有声明没有实现(在抽象类/接口中)
方法参数传递
Java中的参数传递是值传递:
- 基本类型:传递值的副本
- 引用类型:传递引用的副本(对象地址)
void modifyPrimitive(int num) {
num = 100; // 不影响原始值
}
void modifyReference(List<String> list) {
list.add("new item"); // 会影响原始对象
}
方法重载(Overloading)
在同一个类中允许存在多个同名方法,条件是:
- 参数类型不同
- 参数个数不同
- 参数顺序不同
// 重载示例
public void print(int num) { ... }
public void print(String text) { ... }
public void print(int num, String text) { ... }
递归方法
方法可以调用自身实现递归,必须包含:
- 递归终止条件
- 递归调用语句
// 递归计算阶乘
public int factorial(int n) {
if (n == 1) return 1;
return n * factorial(n-1);
}
可变参数(Varargs)
使用...语法支持可变数量的参数:
public int sum(int... numbers) {
int total = 0;
for (int num : numbers) {
total += num;
}
return total;
}
方法的最佳实践
- 保持方法单一职责(一个方法只做一件事)
- 控制方法长度(建议不超过50行)
- 使用有意义的命名
- 避免过多的参数(建议不超过5个)
- 合理使用注释说明方法用途和参数含义
常见问题
- 方法签名冲突:重载时注意参数类型的明确区分
- 递归栈溢出:确保递归有终止条件
- 参数验证:对关键参数进行null检查或范围验证
- 返回值处理:注意基本类型和引用类型返回的区别
