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-…...
科普文章|一文了解平行链及其优势
平行链是一种可以连接到更大规模的区块链网络(波卡)的独立区块链。不同于传统区块链(如比特币和以太坊)是孤立的并且无法在本地相互通信,平行链与其他平行链并行运行,并且相互可以无缝通信。平行链还使用波…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...