Java方法及方法重载的详解

news2024/9/28 7:27:46

目录

一、方法的概念及使用

1.1 方法的概念

1.2 方法的定义

1.3 方法调用的执行过程

1.4 实参和形参的关系

1.5 没有返回值的方法

二、方法的重载

2.1 方法重载存在的原因

2.2 方法重载的概念

一、方法的概念及使用

1.1 方法的概念

        方法就是一个代码片段. 类似于 C 语言中的 " 函数"。 是能够模块化的组织代码 ( 当代码规模比较复杂的时候 ).方法可以 做到代码被重复使用 , 一份代码可以在多个位置使用 .方法 让代码更好理解更简单。 直接调用现有方法开发 , 不必重复造轮子。

1.2 方法的定义

// 方法定义
修饰符 返回值类型 方法名称 ([ 参数类型 形参 ...]){
        方法体代码 ;
        [ return 返回值 ];
}
举个例子,编写一个实现两个数相加的方法.代码如下。
import java.util.Scanner;

public class Test {
    //方法的定义
    public static int add(int a,int b){
        return (a+b);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int result = add(m,n);
        System.out.println(result);
    }
}

注意事项:

1. 修饰符:现阶段直接使用 public static 固定搭配(后续讲解类和对象的时候会说明)
2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
3. 方法名字:采用小驼峰命名
4. 参数列表:如果方法没有参数, () 中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
5. 方法体:方法内部要执行的语句
6. java 当中,方法必须写在类当中
7. java 当中,方法不能嵌套定义
8. java 当中,没有方法声明一说

1.3 方法调用的执行过程

注意事项:

1.定义方法的时候 , 不会执行方法的代码 . 只有调用的时候才会执行 .
2.一个方法可以被多次调用 .

1.4 实参和形参的关系

Java中形参是方法在调用是用来接收传递过来的值,形参的名字可以随意,对方法都没有影响,形参只是方法在定义是需要借助的一个变量,用来保存方法在调用时传递过来的值。

比如:


public class Test {
    public static int getSum(int N){  //N是形参
        return N*(N+1)/2;
    }
    public static void main(String[] args) {
        getSum(10);
        getSum(100);

    }
}

如上代码,N是形参,用来接收方法调用时传递的值,10和100是实参,在方法调用时,形参N用来保存实参10和100.

注意:在Java中,实参的值永远都是拷贝到形参中,形参和 实参本质是两个实体。

1.5 没有返回值的方法

方法的返回值是可选的,根据自己的需求,返回值可有可无,没有返回值时,返回值类型必须是void

如下代码就是一个没有返回值的方法:

public class Test {
    public static void print(int x,int y){
        System.out.println("x = "+x+"\ny = "+y);
    }
    public static void main(String[] args) {
        int x = 10;
        int y = 20;
        print(x,y);
    }
}

二、方法的重载

2.1 方法重载存在的原因

我们先来看下面代码:

public class Test {
    public static int add(int a,int b){
        return a+b;
    }
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a,b);
        System.out.println("ret = "+ ret);
        double a1 = 5.2;
        double b1 = 6.6;
        double ret1 = add(a1,b1);
        System.out.println("ret1 = "+ ret1);
    }

如上代码会报错,

由于参数类型不匹配 , 所以不能直接使用现有的 add 方法。为了解决以上问题,在学习Java之前,大家可能会使用暴力的方法解决,也就是写两个不同的方法,分别来实现整型的加法的浮点型的加法。但是在学习Java之后,我们不再使用暴力的方法,而是使用方法重载的方法来解决这一问题。

2.2 方法重载的概念

Java 中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
举例代码来说明吧。
public class Test {
    public static int add(int a,int b){
        return a+b;
    }
    public static double add(double a,double b){
        return a+b;
    }
    public static double add(double a,double b,int c){
        return a+b+c;
    }
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a,b);
        System.out.println("ret = "+ ret);
        double a1 = 5.2;
        double b1 = 6.6;
        double ret1 = add(a1,b1);
        System.out.println("ret1 = "+ ret1);
        double a2 = 2.5;
        double b2 = 4.6;
        int  c2 = 15;
        double ret2 = add(a2,b2,c2);
        System.out.println("ret2 = " + ret2);
    }

如上代码,我们发现,我们三个方法,而且方法名字也相等,都是add,只是参数类型以及参数数量或者类型的顺序不同而已,这其实就是所谓的方法重载。

注意:

1. 方法名必须相同
2. 参数列表必须不同 ( 参数的个数不同、参数的类型不同、类型的次序必须不同 )
3. 与返回值类型是否相同无关
4. 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法
以上就是方法重载相关知识的详解,欢迎大家来我的评论区进行讨论。

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

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

相关文章

6.4.1认识Amor SWF to Video Converter2

6.4.1认识Amor SWF to Video Converter2 安装完Amor SWF to Video Converter2 (本书使用Amor SWF to Video Converter2.4.9版本)后,单击【开始】|【程序】|【Amor SWF to Video Converter】|【Amor SWF to Video Converter】,启动Amor SWF to Video Con…

软件测试阶段简介_单元测试、集成测试、配置项测试、系统测试

文章目录 前言一、软件测试“V”模型二、单元测试三、集成测试四、配置项测试五、系统测试总结 前言 一般来说,按照软件的研制阶段划分,软件测试可分为单元测试、集成测试、配置项测试、系统测试等。本文将对上述各测试阶段进行逐一介绍。 一、软件测试…

K8S Informer机制原理解读 | Reflector

Reflector Informer可以对Kubernetes API Server的资源执行监控(Watch)操作,资源类型可以是Kubernetes内置资源,也可以是CRD自定义资源,其中最核心的功能是Reflector。Reflector用于监控指定资源的Kubernetes资源&…

CSS 实现卡片以及鼠标移入特效

CSS 实现卡片以及鼠标移入特效 文章目录 CSS 实现卡片以及鼠标移入特效0、效果预览默认鼠标移入后 1、创建卡片组件2、添加样式3、完整代码 0、效果预览 默认 鼠标移入后 在本篇博客中,我们将探讨如何使用 CSS 来实现卡片组件,并添加鼠标移入特效&#…

中顺洁柔宣布:年底前发出1.3亿年终奖金

1月15日,中顺洁柔在广东中山顺利举行了2023年的年度会议。会议上,该企业宣布2023年公司销售和生产条线基层员工收入增幅10%,并将发出1.3亿元的年终奖金。在年华交替之际,这一举措成为了行业瞩目的焦点。 年会上,中顺洁…

防爆气象站需要如何维护

TH-FBCQX2 在工业生产中,防爆气象站是保障安全生产的重要设备之一。由于其特殊的使用环境和功能,防爆气象站的维护保养工作显得尤为重要。 一、日常维护保养 清洁:防爆气象站的外部和内部组件需要定期清洁,以去除灰尘、油渍和杂质…

分类预测 | Matlab实现ISSA-SVM基于多策略混合改进的麻雀搜索算法优化支持向量机的数据分类预测

分类预测 | Matlab实现ISSA-SVM基于多策略混合改进的麻雀搜索算法优化支持向量机的数据分类预测 目录 分类预测 | Matlab实现ISSA-SVM基于多策略混合改进的麻雀搜索算法优化支持向量机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于多策略混合改进的麻…

Kafka Console Client 的 Consumer Group

以往使用 kafka-console-consumer.sh 消费 Kafka 消息时并没有太在意过 Consumer Group,在命令行中也不会使用 --group 参数,本文针对 Kafka Console Client 命令行中的 Consumer Group 进行一次统一说明。 1. 如不设置 --group 参数会自动生成一个 Con…

Flink编程——风险欺诈检测

Flink 风险欺诈检测 文章目录 Flink 风险欺诈检测背景准备条件FraudDetectionJob.javaFraudDetector.java 代码分析执行环境创建数据源对事件分区 & 欺诈检测输出结果运行作业欺诈检测器 欺诈检测器 v1:状态欺诈检测器 v2:状态 时间完整的程序期望的…

vue:菜单栏联动内容页面tab

一、需求 需要实现效果:左侧菜单栏与右侧内容部分联动,当点击左侧的菜单,右侧会展示对应的tab,没有点击时,不展示(如刚进入页面没有点击菜单,则没有tab);点击后没有关闭…

Java 设计者模式以及与Spring关系(一)单例和建造者模式

简介: 本文是个系列一次会出两个设计者模式作用,如果有关联就三个,除此外还会讲解在spring中作用。 23设计者模式以及重点模式 我们都知道设计者模式有3类23种设计模式,标红是特别重要的设计者模式建议都会,而且熟读于心。标蓝是…

计算机毕业设计 基于SpringBoot的红色革命文物征集管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

C#,因数分解(质因子分解)Pollard‘s Rho算法的源代码

因数分解(也称为质因子分解):将一个大整数分解它的质因子之乘积的算法。 Pollard Rho算法的基本思路:先判断当前数是否是素数(质数),如果是,则直接返回。如果不是,继续找…

ubuntu源码安装MySQL

mysql下载路径 创建新数组 mysql sudo groupadd mysql# 创建用户 mysql ,指定属组为 mysql,禁止其登录 # --no-create-home选项,创建用户时不会自动创建主目录 sudo adduser --system --no-create-home --ingroup mysql --shell /sbin/nologin mysql创…

#Pytorch 使用DDP训练第一轮,验证后第二轮卡住

问题:在使用DDP分布式训练的时候,在第一轮训练后验证结果,在第二轮开始时就卡住了。因为设置了dist.barrier(),所以只有第一个GPU跑了验证,在第二轮时只有第一个GPU的模型在,其他卡的模型都被阻塞住了。 解…

NOIP2011提高组day1 - T3:Mayan游戏(玛雅游戏)

题目链接 [NOIP2011 提高组] Mayan 游戏 题目描述 Mayan puzzle 是最近流行起来的一个游戏。游戏界面是一个 7 7 7 行 5 \times5 5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块…

bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start

总结下后端部署windos iis环境net6版本,500.30问题报错的一种解决方案: 一、问题描述 二、解决方案 检查下是否安装了net6对应的环境,是否已经安装 然后在事件管理器>Windows日志>应用程序,里面查看详细异常记录 在iis下面…

机器学习平台建设(六)

四、OpenPAI 前文介绍了机器学习平台的功能以及建设机器学习平台要考虑的因素。本节会介绍OpenPAI,即微软的开源机器学习平台。它可用于企业私有部署,也可部署在云平台中。它解决了建模训练时的算力和资源管理的问题。OpenPAI的开发很活跃,问…

工业设备管理系统:助力企业实现数字化转型

随着工业4.0和智能制造的快速发展,数字化转型已成为企业提升竞争力、适应市场变化的必然选择。工业设备管理系统作为数字化转型的关键组成部分,能够为企业提供实时监控、数据分析、预警和远程控制等功能,助力企业实现数字化转型的目标。 一、…

【办公类-21-02】20240118育婴员操作题word打印2.0

作品展示 把12页一套的操作题批量制作10份,便于打印 背景需求 将昨天整理的育婴师操作题共享, 因为题目里面有大量的红蓝颜色文字,中大班办公室都是黑白单面手动翻页打印。只有我待的教务室办公室有彩色打印机打印(可以自动双面…