当前位置: 首页 > news >正文

2.6 方法

思维导图:

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. **使用技巧**:

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

http://www.lryc.cn/news/187570.html

相关文章:

  • 【排序算法】插入排序
  • Gnuradio+AM解调
  • 解决java.io.IOException: Broken pipe的报错
  • 微信小程序--》从模块小程序项目案例23.10.09
  • 爱尔眼科角膜塑形镜验配超百万,全力做好“角塑镜把关人”
  • 机器学习DAYX:线性回归与逻辑回归
  • 【网络安全】网络安全的最后一道防线——“密码”
  • unity操作_光源组件 c#
  • 2023年全球市场氮化铝外延片总体规模、主要生产商、主要地区、产品和应用细分研究报告
  • C++特性:继承,封装,多态
  • 交通物流模型 | 基于双向时空自适应Transformer的城市交通流预测
  • 【香橙派-OpenCV-Torch-dlib】TF损坏变成RAW格式解决方案及python环境配置
  • HDMI协议介绍(五)--Audio
  • Centos7中安装Jenkins教程
  • 十一、WSGI与Web框架
  • [idekCTF 2022]Paywall - LFI+伪协议+filter_chain
  • Python 自动化Web测试
  • MM-Camera架构-Preview 流程分析
  • 科普文章|一文了解平行链及其优势
  • Tomcat 9.0.41在IDEA中乱码问题(IntelliJ IDEA 2022.1.3版本)
  • 在Kubernetes中实现gRPC流量负载均衡
  • Floorplanning with Graph Attention
  • centos7 配置coreboot编译环境 以及编译问题解决
  • 大型语言模型:RoBERTa — 一种鲁棒优化的 BERT 方法
  • 解析navicate数据库密码
  • mysql字段类型与oracle字段类型对应关系
  • linux 中 tar \ zip 解压错误后撤回
  • 对象图 UML从入门到放弃之四
  • FPGA实现HDMI输入转SDI视频输出,提供4套工程源码和技术支持
  • 针对FTP的SSRF攻击