2.6 方法

news2024/11/15 11:16:41

思维导图:

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.coloradmin.cn/o/1074667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java架构师系统架构设计性能评估

目录 1 导论2 架构评估基础系统性能衡量的基本指标2.1 系统性能的指标2.2 数据库指标2.3 并发用户数2.4 网络延迟2.4 系统吞吐量2.5 资源性能指标3 架构评估基础服务端性能测试3.1基准测试3.2 负载测试3.3 压力测试3.4 疲劳强度测试3.5 容量测试1 导论 本章的主要内容是掌握架构…

【Java】微服务——RabbitMQ消息队列(SpringAMQP实现五种消息模型)

目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比&#xff1a; 2.快速入门2.1.RabbitMQ消息模型2.4.1.publisher实现2.4.2.consumer实现 2.5.总结 3.SpringAMQP3.1.Basic Queue 简单队列模型3.1.1.消息发送3.1.2.消息接收3.1.3.测试 3.2.WorkQueue3.…

【Linux升级之路】7_进程信号

目录 一、【Linux初阶】信号入门 | 信号基本概念信号产生核心转储二、【Linux初阶】信号入门2 | 信号阻塞、捕捉、保存 一、【Linux初阶】信号入门 | 信号基本概念信号产生核心转储 链接&#xff1a; 【Linux初阶】信号入门 | 信号基本概念信号产生核心转储 二、【Linux初阶】…

奖品定制经营商城小程序的作用是什么

奖品是激励人员团体很好的方式&#xff0c;也是荣誉象征&#xff0c;奖牌、奖杯、高端礼盒等&#xff0c;同时市场中团体非常多&#xff0c;其需求也是很多&#xff0c;尤其定制方面&#xff0c;就更是不用说。 对奖品定制企业来说&#xff0c;除了线下门店获客经营外&#xf…

使用BAPI_NETWORK_COMP_*实现生产订单组件的增删改查

1、文档说明 对于生产订单组件的增删改有多种办法&#xff0c;比较常用的有使用内部函数CO_XT_COMPONENT_*&#xff0c;有改造BAPI_ALM_ORDER_MAINTAIN来实现&#xff0c;各有千秋。 本文档介绍&#xff0c;通过PS的BAPI_NETWORK_COMP_*系列BAPI&#xff0c;来实现常见的组件…

单链表习题(对应章节chapter2)

题目1&#xff1a;链表的中间结点 题目来源&#xff1a;leetcode链表的中间结点 第一种思路分析&#xff1a;考虑指针移动到相应的位置来做 参考代码&#xff1a;位置&#xff08;/chapter2/c/middle-link-list-node/lc1.cc&#xff09; #include <stdio.h> extern &qu…

Linux 查看是否安装memcached

telnet 127.0.0.1 11211这样的命令连接上memcache&#xff0c;然后直接输入stats就可以得到memcache服务器的版本 安装memcached &#xff1a; sudo apt-get install memcached

使用HTTP请求操作elastic search

创建索引 获取索引相关信息 查看所有索引 删除索引 向指定索引添加文档 创建文档时指定id 根据id查询doc 查询一个doc下的所有文档

面试算法22:链表中环的入口节点(2)

题目 如果一个链表中包含环&#xff0c;那么应该如何找出环的入口节点&#xff1f;从链表的头节点开始顺着next指针方向进入环的第1个节点为环的入口节点。 例如&#xff0c;在如图4.3所示的链表中&#xff0c;环的入口节点是节点3。 分析 第1步&#xff1a;确认是否包含环…

Java8实战-总结39

Java8实战-总结39 默认方法解决冲突的规则解决问题的三条规则选择提供了最具体实现的默认方法的接口冲突及如何显式地消除歧义菱形继承问题 小结 默认方法 解决冲突的规则 Java语言中一个类只能继承一个父类&#xff0c;但是一个类可以实现多个接口。随着默认方法在Java 8中引…

核货宝:服装店收银系统如何选择?收银系统选购指南!

对于各行各业而言&#xff0c;收银系统都是必备的工具。特别是对于像服装店这样的零售门店来说&#xff0c;选择一套适合的收银系统尤为重要。在选择收银系统时&#xff0c;有一些关键的技巧需要注意&#xff0c;以达到软硬件合理搭配、节省开支的目的。下面将分享四个选购服装…

MAC版Gradle构建Spring5.X源码阅读环境

前言&#xff1a; 三年前鄙人有幸在现已几乎报废的Window的DELL中搭建过Spring源码环境&#xff0c;今天&#xff0c;Mac版的搭建&#xff0c;来了。 本篇文章环境搭建&#xff1a;Spring5.2.1 Gradle5.6.3-all jdk8 IDEA2022.3版本 文章目录 1、Spring源码下载2、Gradle下载…

设计模式 - 行为型模式:策略模式(概述 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、策略模式 1.1.1、概论 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 1.1、策略模式 1.1.1、概论 策略模式设计的每一个算法都封装了起来&#xff0c;使他们可以相互替换&#xff0c;通过一个对象委派不同的算法给相应的客户…

Dubbo 环境隔离

通过标签实现流量隔离环境&#xff08;灰度、多套开发环境等&#xff09; 无论是在日常开发测试环境&#xff0c;还是在预发生产环境&#xff0c;我们经常都会遇到流量隔离环境的需求。 在日常开发中&#xff0c;为了避免开发测试过程中互相干扰&#xff0c;我们有搭建多套独…

基于AlexNet深度学习网络的智能垃圾分类系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、基于AlexNet深度学习网络的智能垃圾分类系统概述 4.2、基于AlexNet深度学习网络的智能垃圾分类系统主要原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab20…

MySQ 学习笔记

1.MySQL(老版)基础 开启MySQL服务: net start mysql mysql为安装时的名称 关闭MySQL服务: net stop mysql 注: 需管理员模式下运行Dos命令 . 打开服务窗口命令 services.msc 登录MySQL服务: mysql [-h localhost -P 3306] -u root -p****** Navicat常用快捷键 键动作CTRLG设…

C语言——文件操作_学习笔记

一、引言——为什么使用文件 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久化的…

仅用61行代码,你也能从零训练大模型

本文并非基于微调训练模型&#xff0c;而是从头开始训练出一个全新的大语言模型的硬核教程。看完本篇&#xff0c;你将了解训练出一个大模型的环境准备、数据准备&#xff0c;生成分词&#xff0c;模型训练、测试模型等环节分别需要做什么。AI 小白友好~文中代码可以直接实操运…

C++ 类和对象篇(三) 空类和6个默认成员函数

目录 一、空类 1. 是什么&#xff1f; 2. 空类中的成员 3. 空类的大小 二、6个默认成员函数 三、 构造函数 1. 构造函数是什么&#xff1f; 2. 为什么C要引入构造函数&#xff1f; 四、析构函数 1. 析构函数是什么&#xff1f; 2. 为什么要有析构函数&#xff1f; 五、拷贝构造…

硬件信号协议UART是干啥的?

UART协议是电子传输中一种常见的信号协议&#xff0c;通常只需要三根信号线就可以完成数据的收发&#xff0c;分别是TX&#xff0c;RX&#xff0c;GND。 UART(universal asynchronous receiver transmitter)&#xff0c;是通用异步收发器&#xff0c;因为是异步&#xff0c;所以…