【Java基础篇】一文搞懂Java方法的调用与重载(超详细)

news2025/1/16 8:07:07

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【JavaSE_primary】
在这里插入图片描述

目录

  • 一、方法的概念以及使用
    • 1.1什么是方法
    • 1.2方法定义
    • 1.3方法调用的执行过程
    • 1.4形参和实参的关系
  • 二、方法的重载
    • 方法签名

一、方法的概念以及使用

1.1什么是方法

概念:在Java中,方法是一段包含了一系列语句的可重用代码块。方法用于执行特定的任务或操作,并且可以带有输入参数和返回值。

方法的意义:Java方法的意义在于提高代码的可读性、可维护性、复用性和灵活性。它们是构建模块化、组织良好且易于扩展的程序的重要组成部分。

在Java中,方法格式如下:

[访问修饰符] [返回类型] 方法名([参数列表]) {
    // 方法体
    // 包含一系列要执行的语句
    // 可能包括变量声明、控制流语句、表达式等
    [return 返回值;]
}

1.2方法定义

我们来举几个具体方法的例子来进行演示,请看:

示例一(add方法):

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

示例二(阶乘和):

//方式一:
public static int facSum1(int n) {
    int sum = 0;
    for(int i = 1;i <= n;i++){
        int ret = 1;
        for(int j = 1;j <= i;j++){
            ret *= j;
        }
        sum += ret;
    }
    return sum;
}
//方式2:
public static int facSum2(int n){
    int sum = 0;
    int ret = 1;
    for(int i = 1;i <= n;i++){
        ret *= i;
        sum += ret;
    }
    return sum;
}

在定义方法时,我们需要注意以下几个注意事项:

  • 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
  • 方法名字:采用小驼峰命名
  • 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
  • 方法体:方法内部要执行的语句
  • 在java当中,方法必须写在类当中,同时方法不能嵌套定义
  • 在Java中,是不存在方法声明的

1.3方法调用的执行过程

在方法调用时,实参会被传递给对应的形参。当方法被调用时,形参会以实参的值来初始化。在方法体中,可以使用形参来处理传递进来的值。形参和实参之间的传递是通过值传递的方式进行的。

具体调用过程如下:调用方法—>传递参数—>找到方法地址—>执行被调方法的方法体—>被调方法结束返回—>回到主调方法继续往下执行

1.4形参和实参的关系

在 Java 中,对于基本数据类型的形参,形参是实参的值的拷贝。形参的改变不会影响到实参

这里举个例子进行演示:

public static void swap(int x,int y){
    int tmp = x;
    x = y;
    y = tmp;
}
public static void main(String[] args) {
    int a = 10;
    int b = 20;
    System.out.println("交换之前:a="+a+" "+"b="+b);
    swap(a,b);
    System.out.println("交换之后:a="+a+" "+"b="+b);
}

结果如下:
在这里插入图片描述

这里补充一点:在Java中,局部变量时存储在栈上,而且不能获取栈上的地址(意思就是没有&a&b这样的说法)。如果要改变或者交换ab这两个变量的话,则必须将其存储到堆上。

另外:方法的返回值是可选的. 有些时候可以没有的,没有时返回值类型必须写成void。

二、方法的重载

在Java中,方法重载是指在同一个类中定义多个方法,这些方法具有相同的方法名但参数列表不同方法重载可以通过改变参数的数量、类型或顺序来实现

方法重载特点如下:

  • 1.方法名相同:被重载的方法必须具有相同的方法名
  • 2.参数列表不同:重载的方法必须具有不同的参数列表,包括参数的个数、类型或顺序的不同
  • 3.返回类型可以不同:方法重载与方法的返回类型无关

下面举个例子:

public int add(int a, int b) {
    return a + b;
}

public double add(double a, double b) {
    return a + b;
}

public int add(int a, int b, int c) {
    return a + b + c;
}

方法签名

方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。

Java编译器是通过方法签名来识别每个方法的。在编译时会根据方法的签名来唯一识别每个方法,并进行方法调用的匹配。

方法签名由以下部分组成:

1.方法名称:方法的名称用于标识方法本身。
2.参数列表:参数列表指定了方法接受的参数的数量、类型和顺序。参数列表中的每个参数都包含参数的类型和参数的顺序。

注意,方法签名与以下因素无关:

1.方法的返回类型:方法的返回类型不包含在方法签名中,所以在方法重载时,只要方法的签名不同,返回类型可以不同
2.方法的访问修饰符:方法的访问修饰符(例如 public、private 等)也不包含在方法签名中。

方法签名的意义:方法签名的唯一性确保了编译器可以根据参数的类型和数量来正确匹配方法调用。

请看:
在这里插入图片描述
所以,在同一个作用域中不能定义两个相同名称的标识符,否则编译器无法识别(不知道该调用哪一个了),方法签名不一样,调用的方法当然就不一样啦。

嗯,就到这里啦,再见啦友友们!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944442.html

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

相关文章

MT4中如何设置Heikin-Ashi图表,10秒钟教会

所有人都在告诉你&#xff0c;在MT4中使用Heikin-Ashi烛台图表能在交易中盈利&#xff0c;但没有人告诉如何在MT4中添加Heikin-Ashi图表&#xff0c;如何设置Heikin-Ashi图表&#xff0c;其实很简单&#xff0c;FPmarkets澳福10秒钟教会&#xff0c;如果不好使&#xff0c;FPma…

VS2008统计代码行数

1.利用组合键&#xff08;ctrl shift F&#xff09;&#xff0c;查找&#xff1a; b*[^:b#/].*$ 结果如下&#xff1a; 如图所示&#xff0c;一共 104093行代码。

【网络安全防护】上海道宁与Bitdefender帮助您构建弹性网络并降低安全运营成本

在网络的世界中 风险变得更加常见与复杂 企业需要从网络安全转向网络弹性 复杂的网络攻击已非常普遍 在面临攻击时 企业如何保持业务连续性&#xff1f; Bitdefender GravityZone将 风险分析、安全加固、威胁预防 检测和响应功能相结合 帮助您构建弹性网络 并降低安全…

vue集成mars3d后,basemaps加不上去

首先&#xff1a; <template> <div id"centerDiv" class"mapcontainer"> <mars-map :url"configUrl" οnlοad"onMapload" /> </div> </template> <script> import MarsMap from ../component…

如何利用 CRM 做好销售渠道管理?

销售渠道管理是成功销售战略的一个重要方面。它涉及建立、跟踪和组织销售流程的各个阶段&#xff0c;以确保顺利、高效地将潜在客户转化为付费客户。 销售渠道管理为跟踪和优先处理交易提供了一个清晰的框架&#xff0c;采用销售渠道漏斗模板可以进一步简化流程。通过有效管理…

Linux系统下vim常用命令

一、基础命令&#xff1a; v:可视模式 i:插入模式 esc:命令模式下 :q &#xff1a;退出 :wq &#xff1a;保存并退出 ZZ&#xff1a;保存并退出 :q! &#xff1a;不保存并强制退出二、在Esc下&#xff1a; dd : 删除当前行 yy:复制当前行 p:复制已粘贴的文本 u:撤销上一步 U:…

使用Python和systemctl管理Linux系统服务的简便工具

前言 本文介绍了一个实用工具&#xff0c;用于在Linux系统上管理systemctl服务。该工具提供了创建、安装、卸载、启动和停止服务的功能&#xff0c;帮助用户轻松地管理和控制正在运行的服务。 通过使用该代码&#xff0c;你可以轻松地执行以下操作&#xff1a; 创建服务文件&…

解决centos离线安装cmake找不到OpenSSL问题

安装方法&#xff1a;见另外一篇文章 https://blog.csdn.net/zhongxj183/article/details/118488629 按照文章下载了离线gcc 和OpenSSL&#xff0c;以及在cmake官网下载了最新版 cmake-3.27.4.tar.gz 顺利安装gcc 和OpenSSL 但执行编译cmake时&#xff0c;报错找不到OpenSSL…

软考A计划-网络工程师-必考知识点-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

液冷连接器快速接头

液冷连接器快速接头常用介质 水、乙二醇水溶液、纯乙二醇、空调制冷剂和硅油等。 液冷连接器快速接头应用 强振动冷却回路手动连接雷达数据中心电子冷却吊舱 液冷连接器快速接头材质 主体材料不锈钢或经表面处理的铝合金 密封圈选用低温硅橡胶或HNBR 液冷连接器快速接头主…

5G智能网关如何解决城市停车痛点难点

2023年上半年&#xff0c;我国汽车新注册登记1175万辆&#xff0c;同比增长5.8%&#xff0c;88个城市汽车保有量超过100万辆&#xff0c;北京、成都等24个城市超过300万辆。随着车辆保有量持续增加&#xff0c;停车难问题长期困扰城市居民&#xff0c;也导致城市路段违停普遍、…

架构设计:Docker容器化部署

在现代软件开发和部署中&#xff0c;Docker 容器化技术已经成为一种重要的解决方案。它不仅简化了应用程序的构建和部署过程&#xff0c;还提供了跨环境一致性、可移植性和高效性。本文将介绍一个完整的 Docker 容器化部署架构设计&#xff0c;帮助您深入了解如何将应用程序成功…

mysql中的with

概念 WITH 子句是 MySQL 中的一种 SQL 结构&#xff0c;又称为 Common Table Expression (CTE)。它在不影响原有 SQL 语句的情况下&#xff0c;允许开发人员临时创建一个内存中的结果集&#xff0c;然后对其进行操作。 作用 WITH 子句的主要用途是创建一个暂时的结果集&…

NewStarCTF 2022 web方向题解 wp

----------WEEK1---------- BUU NewStarCTF 公开赛赛道 WEEK1 [NotPHP] 先看题目&#xff0c;要传参加绕过。 分析一下代码&#xff1a;首先get一个datadata://test/plain,Wel…。然后key1和2用数组可以绕过。num2077a可以绕过弱类型。eval()中的php语句被#注释了&#xff0c…

SpringBoot中间件ElasticSearch

Elasticsearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的 全文搜索引擎 &#xff0c;基于RESTful web 接口。 Elasticsearch 是用 Java 语言开发的&#xff0c;并作为 Apache 许可条款下的开放源码发布&#xff0c;是一种流行的企业级搜索引擎。Elastics…

软考(一)进制的表示(二进制,八进制,十进制,十六进制)

进制的转换 一、进制的表示 二进制&#xff08;B&#xff09;&#xff1a; 0 , 1 , 10 , 11 , 100 , 101 , 110 , 111 , 1000 0,1,10,11,100,101,110,111,1000 0,1,10,11,100,101,110,111,1000 对应的十进制是&#xff1a; 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 0,1,2,3,4,5,6…

视频汇聚/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

长安链并行调度机制(2):DAG构建和从节点执行流程

长安链采用高效的并行调度方式执行交易&#xff0c;了解长安链交易调度、冲突检测和DAG构建流程有助于开发者更好地理解长安链并行调度的运行机制&#xff0c;帮助开发者编写高质量、低冲突的智能合约&#xff0c;更好地构建区块链应用。 上一篇内容我们说明了长安链交易调度、…

STM32驱动SD卡(SPI)方式

外观 代码(免费分享) 接线 5V供电 CS接PA3 剩下如图按照硬件SPI1接线 注意事项 使用杜邦线接线非常不稳定&#xff01;&#xff01;&#xff01; 使用杜邦线接线非常不稳定&#xff01;&#xff01;&#xff01; 使用杜邦线接线非常不稳定&#xff01;&#xff01;&#…

如何将 Animate 动画与 After Effects 中的 Cinema 4D 渲染合并?

如何将手动动画 2D 元素添加到 3D 渲染中&#xff0c;有多种方法可以做到这一点&#xff0c;但您需要确保在动画的两侧都进行设置&#xff0c;以确保在合成时能够充分利用资源。上面的视频确实贯穿了一个非常实用且高效的工作流程&#xff0c;以实现正确的这些效果。 创建参考…