2.6 方法

本文介绍了Java中的方法概念,包括方法的定义、调用、返回值、参数传递,重点讲解了方法重载的概念和应用,以及处理递归、值传递与引用传递的难点。同时提供了编程技巧,如代码重用、单一职责原则和清晰命名,以提升代码质量和可读性。

思维导图:

2.6.1 什么是方法 

### 2.6.1 什么是方法

**定义**:
- 方法就是一段可以重复调用的代码,使得程序的可读性、可维护性都得以提高。

**示例**:
- 假设有一个游戏中需要反复发射炮弹。而发射炮弹的代码有100行。为了避免在程序中多次写下这100行代码,可以将它们抽取成一个方法,然后在需要的地方调用此方法。

**注意事项**:
- 有些资料中也会将“方法”称为“函数”。

**Java中的方法语法**:

修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ... ) {
    // 执行语句
    return 返回值;
}

**具体说明**:
- **修饰符**: 控制方法的访问权限、是否为静态等属性。具体内容会在后续学习中介绍。
- **返回值类型**: 定义方法返回的数据类型。
- **参数类型** 和 **参数名**: 定义调用方法时传入的数据类型和接收传入数据的变量。
- **return 关键字**: 用于返回指定类型的值并结束方法。
  
  如果方法声明的返回值类型是 `void`,表示该方法不返回任何值,此时,可以不写 `return` 语句。

**示例代码**:

public class Example19 {
    public static void main(String[] args) {
        printRectangle(3,5);
        printRectangle(2,4);
        printRectangle(6,10);
    }

    public static void printRectangle(int height, int width) {
        for(int i = 0; i < height; i++) {
            for(int j = 0; j < width; j++) {
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}

在上述示例中,`printRectangle` 是一个方法,它接受两个参数 `height` 和 `width` 来打印相应大小的矩形。`main` 方法中则调用了 `printRectangle` 三次,分别打印了不同大小的矩形。

**运行结果**: 

该程序会打印三个矩形,大小分别为3行5列、2行4列和6行10列。

---

以上是对2.6.1节内容的笔记整理。

 2.6.2 方法的重载

**2.6.2 方法的重载**

**概念:** 方法重载指的是在同一作用域内,方法名相同,但参数个数或参数类型不同的方法。需要注意的是,重载与方法的返回值无关,也就是说,仅仅返回值不同的方法并不构成重载。

**实际应用:** 例如在现实生活中,一个班级里可能有多个同名的学生,但我们可以通过其他信息(如他们的身高、体重或住址等)来区分他们。在编程中,我们可以通过方法的参数类型和数量来区分重载的方法。

**案例:** 文件2-22 `Example21.java`

public class Example21 {
    public static void main(String[] args) {
        int sum1 = add(1, 2);
        int sum2 = add(1, 2, 3);
        double sum3 = add(1.2, 2.3);

        System.out.println("sum1=" + sum1);
        System.out.println("sum2=" + sum2);
        System.out.println("sum3=" + sum3);
    }

    public static int add(int x, int y) {
        return x + y;
    }

    public static int add(int x, int y, int z) {
        return x + y + z;
    }

    public static double add(double x, double y) {
        return x + y;
    }
}

**说明:** 从上述代码中可以看出,在`Example21`类中定义了三个`add`方法:

1. 两个整数相加
2. 三个整数相加
3. 两个浮点数相加

尽管这些方法的名字都是`add`,但由于它们接受的参数个数或类型不同,因此这些方法都是有效的,并且是重载的方法。当在`main`方法中调用这些`add`方法时,Java会根据传递给方法的参数数量和类型来确定应该调用哪一个方法。

**运行结果:**  

sum1=3
sum2=6
sum3=3.5

**结论:** 方法重载提供了一种方式,让程序员可以使用相同的方法名,但为不同的数据类型或参数个数定义不同的方法实现,这增加了代码的可读性和重用性。

 

 

 总结:

**Java 中的方法**涉及很多内容,下面我将总结一些重点、难点、易错点及使用技巧:

### 1. **重点**:

- **定义和调用**:理解如何定义一个方法(包括返回类型、方法名、参数列表)以及如何正确调用它。
- **参数传递**:区分值传递与引用传递。
- **返回值**:理解何时返回值,以及如何处理返回的值。
- **方法重载**:同一个类中可以定义多个名字相同但参数列表不同的方法。
- **递归**:方法调用自身。

### 2. **难点**:

- **递归**:理解递归并能够正确实现可以是具有挑战性的。要特别注意递归的终止条件。
- **可变参数**:理解如何使用和处理可变参数 `...`。
- **方法参数的传递机制**:对于初学者来说,Java中的值传递与引用传递可能会引起混淆。

### 3. **易错点**:

- **返回值的遗漏**:声明了返回值但是方法体中忘记返回或者返回了错误的类型。
- **递归无终止条件**:导致堆栈溢出错误。
- **方法重载与参数列表**:错误地认为方法重载只与返回值类型有关,而实际上它与参数列表有关。
- **参数传递混淆**:错误地期望基本数据类型像对象一样按引用传递。

### 4. **使用技巧**:

- **代码重用**:定义和使用方法可以避免重复代码,提高代码的可读性和可维护性。
- **单一职责**:尽量保证每个方法只做一件事,这样它们更容易理解和测试。
- **清晰命名**:方法的名称应清晰地表达它的功能。
- **利用方法重载**:可以为不同的参数类型或数量提供相同的方法名,增加代码的清晰性。
- **适当的注释**:对于复杂的、非直观的或特定目的的方法,添加注释来解释它的工作原理和用途。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值