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

相关文章:
2.6 方法
思维导图: 2.6.1 什么是方法 ### 2.6.1 什么是方法 **定义**: - 方法就是一段可以重复调用的代码,使得程序的可读性、可维护性都得以提高。 **示例**: - 假设有一个游戏中需要反复发射炮弹。而发射炮弹的代码有100行。为了避免在程序中多次写下这100…...
【排序算法】插入排序
文章目录 一:基本概念1.1 介绍1.2 原理1.3 插入排序法思想 二:代码实现2.1 源码2.2 执行结果2.3 测试八万条数据 三:算法分析3.1 时间复杂度3.2 空间复杂度3.3 稳定性 一:基本概念 1.1 介绍 插入式排序属于内部排序法࿰…...
Gnuradio+AM解调
1. https://wiki.gnuradio.org/index.php/PLL_Carrier_Tracking 2. https://wiki.gnuradio.org/index.php?titleComplex_to_Mag#Example_Flowgraph...
解决java.io.IOException: Broken pipe的报错
问题说明: 订单服务,查询预售但是出现Broken pipe; 测试版是正常的,正式版报错 解决方案 1、延长客户端超时时间 // 查询预售单列表 export function listPreOrder(query) {return request({url: /order/presale/list,method:…...
微信小程序--》从模块小程序项目案例23.10.09
配置导航栏 导航栏是小程序的门户,用户进来第一眼看到的便是导航栏,其起着对当前小程序主题的概括。而我们 新建的小程序 时,第一步变开始配置导航栏。如下: 配置tabBar 因为配置tabBar需要借助字体图标,我这里平常喜…...
爱尔眼科角膜塑形镜验配超百万,全力做好“角塑镜把关人”
你知道吗?过去的2022年,我国儿童青少年总体近视率为53.6%,其中6岁儿童为14.5%,小学生为36%,初中生为71.6%,高中生为81%①。儿童青少年眼健康问题俨然成为全社会关心的热点与痛点,牵动着每一个人的神经。 好…...
机器学习DAYX:线性回归与逻辑回归
线性回归 多重线性回归 逻辑回归...
【网络安全】网络安全的最后一道防线——“密码”
网络安全的最后一道防线——“密码” 前言超星学习通泄露1.7亿条信息事件武汉市地震监测中心遭境外网络攻击事件 一、密码起源1、 古代密码2、近代密码3、现代密码4、量子密码 二、商密专栏推荐三、如何利用密码保护账号安全?1、账号安全的三大危险?&…...
unity操作_光源组件 c#
准备工作 添加资源导入后先不管,现在主要学习自带Directional Light 我们首先创建一个平面Plane 然后重置一下位置 然后创建一个Cube 也重置一下位置然后修改y0.5刚好在这个平面上 ctrl d复制一个Cube 修改位置和旋转角度 给物体一个颜色 接下来创建一个点光源 我们…...
2023年全球市场氮化铝外延片总体规模、主要生产商、主要地区、产品和应用细分研究报告
按收入计,2022年全球氮化铝外延片收入大约9百万美元,预计2029年达到25百万美元,2023至2029期间,年复合增长率CAGR为 16.1%。同时2022年全球氮化铝外延片销量大约 ,预计2029年将达到 。2022年中国市场规模大约为 百万美…...
C++特性:继承,封装,多态
继承 封装 类把⾃⼰的数据和⽅法只让可信的类或者对象操作,对不可信的进⾏隐藏,如:将公共的数据或⽅法使⽤public修饰,⽽不希望被访问的数据或⽅法采⽤private修饰 多态 即向不同对象发送同⼀消息,不同的对象在接收…...
交通物流模型 | 基于双向时空自适应Transformer的城市交通流预测
城市交通流预测是智能交通系统的基石。现有方法侧重于时空依赖建模,而忽略了交通预测问题的两个内在特性。首先,不同预测任务的复杂性在不同的空间(如郊区与市中心)和时间(如高峰时段与非高峰时段)上分布不均匀。其次,对过去交通状况的回忆有利于对未来交通状况的预测。基于…...
【香橙派-OpenCV-Torch-dlib】TF损坏变成RAW格式解决方案及python环境配置
前言 本文将介绍在香橙派(Orange Pi)开发板上进行软件配置和环境搭建的详细步骤,以便运行Python应用程序。这涵盖了以下主要内容: 获取所需软件:提供了香橙派操作系统和balenaEtcher工具的下载链接,以确保…...
HDMI协议介绍(五)--Audio
基础知识 I2S(inter-IC sound bus)飞利浦公司制定的标准,既规定了硬件接口规范,也规定了数字音频数据格式。 硬件接口规范 I2S接口有3个主要信号: 时钟信号 Serial Clock 串行时钟SCK,也叫位时钟(BCLK)&…...
Centos7中安装Jenkins教程
1.必须先配置jdk环境,安装jdk参考 Linux配置jdk 2.先卸载Jenkins # rpm卸载 rpm -e jenkins # 检查是否卸载成功 rpm -ql jenkins # 彻底删除残留文件 find / -iname jenkins | xargs -n 1000 rm -rf 3.安装Jenkins 在 /usr/ 目录下创建 jenkins文件夹 mkdir -p je…...
十一、WSGI与Web框架
目录 一、什么是WSGI1.1 WSGI接口的组成部分1.2 关于environ 二、简易的web框架实现2.1 文件结构2.2 在web/my_web.py定义动态响应内容2.3 在html/index.html中定义静态页面内容2.4 在web_server.py中实现web服务器框架2.5 测试 三、让简易的web框架动态请求支持多页面3.1 修改…...
[idekCTF 2022]Paywall - LFI+伪协议+filter_chain
[idekCTF 2022]Paywall 一、解题流程(一)、分析(二)、解题 二、思考总结 一、解题流程 (一)、分析 点击source可以看到源码,其中关键部分:if (isset($_GET[p])) {$article_content…...
Python 自动化Web测试
限于作者水平有限,以下内容可能是管窥之见,希望大家高抬贵手,且让我斗胆抛砖引玉。 公司产品迪备主要是通过网页操作来进行数据库的备份与恢复,监控与管理,因此在测试的过程中,可以用python测试脚本来模拟…...
MM-Camera架构-Preview 流程分析
目录 文章目录 1 log开的好,问题都能搞2 lib3 preview3.1 打开视频流3.1.1 cpp\_module\_start\_session3.1.2 cpp\_thread\_create3.1.3 cpp\_thread\_funcsundp-3.1 cpp\_hardware\_open\_subdev(ctrl->cpphw)sundp-3.2 cpp\_hardware\_process\_command(ctrl-…...
科普文章|一文了解平行链及其优势
平行链是一种可以连接到更大规模的区块链网络(波卡)的独立区块链。不同于传统区块链(如比特币和以太坊)是孤立的并且无法在本地相互通信,平行链与其他平行链并行运行,并且相互可以无缝通信。平行链还使用波…...
如何高效使用开源工具EnergyStarX提升Windows 11电池续航:完整实战指南
如何高效使用开源工具EnergyStarX提升Windows 11电池续航:完整实战指南 【免费下载链接】EnergyStarX 🔋 Improve your Windows 11 devices battery life. A WinUI 3 GUI for https://github.com/imbushuo/EnergyStar. 项目地址: https://gitcode.com/…...
瑞芯微RK3399固件急救指南:用upgrade_tool搞定系统崩溃后的快速还原
RK3399固件灾难恢复实战:从分区表重建到全系统还原 当一块搭载RK3399的开发板因固件损坏而变砖时,那种面对黑屏的无力感,相信每个嵌入式开发者都深有体会。去年我们产线就遭遇过因批量升级失败导致30台设备集体罢工的紧急状况,正…...
Qwen3-ASR-1.7B惊艳效果:自动识别中英文技术文档朗读中的公式/代码块
Qwen3-ASR-1.7B惊艳效果:自动识别中英文技术文档朗读中的公式/代码块 你有没有遇到过这样的场景?听一场技术分享的录音,讲师在讲解代码逻辑时,你一边听一边手忙脚乱地记录,生怕漏掉一个括号或一个变量名。或者&#x…...
PyTorch 3.0 DDP + torch.compile混合训练面试通关手册:涵盖Graph Break诊断、Shard策略冲突、以及3种反模式现场复现
第一章:PyTorch 3.0 静态图分布式训练面试概览PyTorch 3.0 并非官方发布版本(截至2024年,PyTorch最新稳定版为2.3),但“PyTorch 3.0”在面试语境中常被用作一种假设性技术命题,用于考察候选人对静态图编译、…...
异构计算与边缘协同:基于 ARM/X86 的企业级 AI 视频中台架构设计
引言:算力碎片化时代的“异构”挑战 在 AI 落地安防的深水区,架构师面临的最大挑战不再是算法模型的精度,而是算力底座的碎片化。项目现场往往呈现出复杂的“万国牌”局面:总部机房可能部署着 NVIDIA A100 的 x86 服务器用于离线训…...
Z-Image-Turbo模型在智能车领域的应用:仿真场景图像生成
Z-Image-Turbo模型在智能车领域的应用:仿真场景图像生成 最近和几个做自动驾驶算法的朋友聊天,他们都在为一个问题头疼:测试数据不够用。特别是那些罕见的极端场景,比如暴雨天、浓雾夜,或者刺眼的逆光路况,…...
Kandinsky-5.0-I2V-Lite-5s企业应用:HR招聘海报→候选人互动式动态介绍视频生成
Kandinsky-5.0-I2V-Lite-5s企业应用:HR招聘海报→候选人互动式动态介绍视频生成 1. 引言:让招聘海报"活"起来 想象一下这样的场景:你的HR团队精心设计了一份招聘海报,但投递量却不如预期。问题可能出在传统静态海报难…...
效率提升:基于快马平台实现openclaw windows部署的自动化与优化
最近在团队里负责优化openclaw在Windows环境的部署流程,发现传统手动部署方式存在不少效率瓶颈。经过在InsCode(快马)平台上的实践,我们实现了一套自动化部署方案,效果提升明显。这里分享几个关键优化点: 全流程一键化部署 过去部…...
FLUX.2-klein-base-9b-nvfp4进阶:利用LSTM时序理解优化视频连贯风格转换
FLUX.2-klein-base-9b-nvfp4进阶:利用LSTM时序理解优化视频连贯风格转换 最近在折腾视频风格转换时,发现一个挺让人头疼的问题:用那些单帧处理的模型,出来的视频总是一闪一闪的,风格也忽明忽暗,看着特别不…...
Qwen3.5-4B-Claude模型Java微服务集成指南:SpringBoot实战案例
Qwen3.5-4B-Claude模型Java微服务集成指南:SpringBoot实战案例 1. 引言:当大模型遇上微服务 最近在开发企业知识管理系统时,我们遇到了一个典型需求:如何让传统Java微服务架构与前沿的大语言模型无缝集成。经过多次尝试…...

