方法的定义
方法是一段封装了特定业务逻辑功能的代码,给它起一个名称,通过名称可以反复调用执行。
方法的设计原则
| 原则 | 说明 |
|---|---|
| 单一职责 | 一个方法只干一件事,尽可能独立 |
| 可重复调用 | 定义一次,多处反复调用 |
| 可互相调用 | 方法可以调用其他方法,也可以被其他方法调用 |
| 减少重复 | 避免代码冗余,提高可维护性 |
| 利于协作 | 不同开发者负责不同方法,互不干扰 |
方法的定义格式
修饰符 返回值类型 方法名(参数列表) {
方法体;
return 返回值; // 返回值类型为 void 时不需要
}Code language: JavaScript (javascript)
曾经用过的方法
在之前的代码中其实已经大量使用了方法:
System.out.println("hello foxdevelop.com"); // 输出方法
System.arraycopy(a, 0, b, 0, 3); // 数组复制方法
Arrays.sort(a); // 数组排序方法
int a = scan.nextInt(); // 读取整型输入
double b = scan.nextDouble(); // 读取浮点型输入
double c = Math.random(); // 生成随机数
int[] d = Arrays.copyOf(a, a.length); // 数组复制方法Code language: JavaScript (javascript)
方法的返回值
| 类型 | 说明 | 示例 |
|---|---|---|
| 无返回值 | 用 void 表示,不返回数据 | public static void main(String[] args) |
| 有返回值 | 写具体的返回值类型,方法体中用 return 返回 | public static int add(int a, int b) |
// 无返回值
public static void printHello() {
System.out.println("hello");
}
// 有返回值
public static int add(int a, int b) {
return a + b;
}Code language: PHP (php)
方法的参数
参数相当于原材料,传入方法后经过加工处理,可以返回结果(产品)。
public static int multiply(int a, int b) {
return a * b;
}
// 调用
int result = multiply(3, 7); // 传入 3 和 7,返回 21Code language: PHP (php)
- 方法可以无参数:
public static void sayHi() { ... } - 方法可以有参数:
public static void sayHi(String name) { ... } - 参数可以有多个,用逗号隔开:
(int a, double b, String c)
完整示例
public static void main(String[] args) {
System.out.println("www.foxdevelop.com");
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
}Code language: JavaScript (javascript)
上述代码中:
| 调用 | 方法 | 返回值类型 | 参数 |
|---|---|---|---|
System.out.println(...) | 输出 | void | 1 个(字符串) |
scan.nextInt() | 读取整数 | int | 无 |
scan.nextDouble() | 读取浮点数 | double | 无 |
方法调用过程
- 执行到方法调用处,跳转到被调用的方法
- 将实参传递给形参
- 执行方法体
- 遇到
return或方法体结束,返回调用处继续执行
注意事项
| 要点 | 说明 |
|---|---|
| 命名规范 | 小驼峰命名法,见名知意(如 calculateSum) |
| 参数传递 | 基本类型是值传递,引用类型是地址传递 |
return | 有返回值的方法必须保证每条路径都有 return |
| 方法不能嵌套 | 方法内部不能再定义另一个方法,但可以在一个方法中调用其他方法 |