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

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【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.mzph.cn/news/57912.shtml

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

相关文章

聚观早报|2023戴尔科技峰会助力创新;小米汽车电池供应商敲定

【聚观365】8月23日消息 2023戴尔科技峰会助力企业创新 小米汽车电池供应商敲定中创新航和宁德时代 iPhone15预计有6种配色 王小川卸任自动驾驶企业禾多科技董事 特斯拉动力总成副总裁宣布离职 2023戴尔科技峰会助力企业创新 近日“新生万物 数实新格局 —— 2023戴尔科技…

暑期实习总结(焊点数据管理软件开发):Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转

暑期实习总结&#xff08;焊点数据管理软件开发&#xff09;:Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转 ​ 这一周是我在企业实习的最后一周&#xff0c;在企业做的项目已基本完成。这篇博客的目的也是总结一些项目中的一些小问题&…

记录开发环境docker上的一次springboot无法读取更新的配置文件的问题

背景&#xff1a;一般开发环境的管理不是很严格&#xff0c;当对代码进行一些组件的添加时&#xff0c;往往需要修改spring的配置文件&#xff0c;有的时候为了保险起见&#xff0c;回预先备份原本的配置文件&#xff0c;我采取在./config中创建了一个名为bak-日期的目录&#…

[Android 四大组件] --- BroadcastReceiver

1 BroadcastReceiver是什么 BroadcastReceiver&#xff08;广播接收器&#xff09;即广播&#xff0c;是一个全局的监听器。 Android 广播分为两个角色&#xff1a;广播发送者、广播接受者。 2 广播类型 广播按照类型分为两种&#xff0c;一种是全局广播&#xff0c;另一种…

实用的面试经验分享:程序员们谈论他们的面试历程

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!

全套解决方案&#xff1a;基于pytorch、transformers的中文NLP训练框架&#xff0c;支持大模型训练和文本生成&#xff0c;快速上手&#xff0c;海量训练数据&#xff01; 1.简介 目标&#xff1a;基于pytorch、transformers做中文领域的nlp开箱即用的训练框架&#xff0c;提…

老Python程序员职业生涯感悟—写给正在迷茫的你

我来讲几个极其重要&#xff0c;但是大多数Python小白都在一直犯的思维错误吧&#xff01;如果你能早点了解清楚这些&#xff0c;会改变你的一生的。所以这一期专门总结了大家问的最多的&#xff0c;关于学习Python相关的问题来给大家聊。希望能带给大家不一样的参考。或者能提…

Unity之Photon PUN2开发多人游戏如何实现组队功能

前言 Photon Unity Networking 2 (PUN2) 是一款基于Photon Cloud的Unity多人游戏开发框架。它提供了一系列易于使用的API和工具,使开发者可以快速构建多人戏,并轻松处理多人游戏中的网络同步、房间管理、玩家匹配等问题。 我们在查看Pun2的Demo时,会发现Demo中自带了一个简…

Cento7 Docker-compose安装RabbitMQ

RabbitMQ是一个消息中间件&#xff0c;是用Erlang语言编写的。RabbitMQ据说具有良好的性能和时效性&#xff0c;同时还能够非常好的支持集群和负载部署&#xff0c;非常适合在较大规模的分布式系统中使用。接下来我们就以docker形式安装。 1.先安装docker环境 yum -y install…

使用阿里云国外和国内云服务器有什么注意事项?

使用阿里云的国外和国内云服务器时&#xff0c;有一些注意事项需要考虑&#xff1a; 地理位置&#xff1a;选择离你的用户或数据中心最近的地理位置&#xff0c;可以减少延迟和提高访问速度。对于国内用户&#xff0c;使用国内云服务器可能更好&#xff1b;对于国外用户&#…

https协议经过SpringMVC重定向之后变成http协议

之前项目的协议还是http&#xff0c;当改为https之后&#xff0c;就出现了这个问题。 服务访问地址&#xff1a;https://wuxinke.demo.com 访问某个页面的地址&#xff1a;https://wuxinke.demo.com/aps/judgeProviderOrCtenant.ht 经SpringMVC重定向之后&#xff0c;地址变…

移动端h5项目的兼容和适配问题

解决兼容性问题的关键在于对移动端产品的生存环境进行梳理&#xff0c;在此基础之上制定应对策略。 所谓生存环境主要分为三个维度&#xff1a; 硬件环境&#xff0c;细分为品牌和机型&#xff0c;决定了屏幕大小、性能等硬件限制 操作系统&#xff0c;比如iOS6和iOS7&#xf…

从多个角度详解map转为list

从多个角度详解map转为list 更新&#xff1a;2023-05-20 19:24 在Java编程中&#xff0c;我们经常使用map存储键值对数据&#xff0c;而有时我们需要把map转为list&#xff0c;本文将从多个方面对map转list做详细的阐述。 一、map转为list的基础方法 Java提供了多种方法将m…

Java实现SM2前后端加解密

Sm2加解密原理&#xff0c;非对称加密&#xff0c;公钥加密&#xff0c;私钥解密。公私钥对成对生成&#xff0c;加密端解密端各自保存。用公钥加密必须要用对应的私钥才能解密&#xff0c;保证安全性。 这里我们实现的功能是前端加密&#xff0c;后端解密&#xff0c;这样前端…

四川玖璨电子商务有限公司:抖店运营攻略

抖店运营&#xff0c;是指在抖音平台上进行电商销售的一种新型商业模式。随着抖音平台越来越受到年轻人的喜爱和关注&#xff0c;抖店运营正变得越来越重要。那么&#xff0c;抖店运营应该如何做呢&#xff1f;我们来谈谈抖店运营的一些攻略。 第一&#xff0c;选对产品。选择…

什么是住宅ip,静态和动态怎么选?

上文我们介绍了数据中心代理&#xff0c;这次我们来介绍下住宅代理ip&#xff0c;住宅代理ip分类两种类型&#xff1a;静态住宅代理和动态住宅代理&#xff0c;他们有什么区别又能用在什么场景呢&#xff1f;我们先从他们是如何运作开始。 一、什么是住宅代理ip isp住宅代理i…

如何通过原型修改第三方类库,来实现自己的功能而不破坏类库?手写一下

使用原型链对第三方库进行扩展或修改是JavaScript中的常见做法。这种做法的优点是可以在不修改原始库源码的情军况下增加或修改功能。但也需要小心&#xff0c;因为过度的修改可能会导致与原始库的不兼容&#xff0c;或者出现不可预料的副作用。 下面给出一个简单的例子说明如…

【java】【springboot】【idea】springboot项目pom.xml 灰色下划线

解决方案&#xff1a; 这里我们找到了原因&#xff0c;就是因为选择了Ignored Files导致pom.xml文件被设置在maven忽略文件清单中&#xff0c;所以我们将打勾的选项取消&#xff0c;点击Apply,然后点击OK

DatabaseMetaData.getIndexInfo获取索引权限不足

报错&#xff1a; - [com.unicom.dts.api.jdbc.AbsJdbcUtil : getTableIndexs : 783] - java.sql.SQLSyntaxErrorException: ORA-01031: 权限不足 原因&#xff1a; 缺少analyze权限 解决办法&#xff1a; 赋权限sql&#xff1a;grant analyze any to oracle_whcs; getIndex…

Spark 启动时,报JAVA_HOME is not set

文章目录 1、报错内容2、解决方式3、再次启动Spark集群 1、报错内容 Spark启动时报错&#xff1a; hadoop104: JAVA_HOME is not set2、解决方式 解决方式&#xff1a; 打开启动配置文件 cd /opt/module/spark-standalone/sbin/ vim spark-config.sh配置Java的环境变量 …