java第十八课 —— 重载、可变参数

方法重载

基本介绍

java 中允许同一个类中,多个同名方法的存在,但要求形参列表不一致!

比如:System.out.println(); out 是 PrintStream 类型

重载的好处

  1. 减轻了起名的麻烦
  2. 减轻了记名的麻烦

注意事项和使用细节

  1. 方法名:必须相同
  2. 参数列表:必须不同(参数类型个数顺序,至少有一样不同,参数名无要求)
  3. 返回类型:无要求

练习题

第一题:b c d e
在这里插入图片描述

第二题:编写程序,类 Methods 中定义三个重载方法并调用。方法名为 m。三个方法分别接收一个 int 参数、两个 int 参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的 main() 方法中分别用参数区别调用三个方法。

import java.util.Scanner;
public class OverLoadExercise{public static void main(String[] args){Methods method = new Methods();int result1 = method.m(10);System.out.println("平方运算:" + result1);	int result2 = method.m(9,10);	System.out.println("两数相乘并输出:" + result2);String s = method.m("方法的重载");System.out.println("打印字符串:" + s);			}
}
class Methods{public int m(int num){return num * num;}public int m(int num1, int num2){return num1 * num2;}public String m(String s){return s;}}

第三题:在 Methods 类,定义三个重载方法 max(),第一个方法,返回两个 int 值中的最大值,第二个方法,返回两个double 值中的最大值,第三个方法,返回三个 double 值中的最大值,并分别调用三个方法。

import java.util.Scanner;
public class OverLoadExercise{public static void main(String[] args){Methods method = new Methods();int result1 = method.max(1,10);System.out.println("两个int值的最大值:" + result1);	double result2 = method.max(9.0,10.0);	System.out.println("两个double值的最大值:" + result2);double result3 = method.max(1.0,2.0,3.0);System.out.println("三个double值的最大值:" + result3);			}
}
class Methods{public int max(int num1, int num2){return num1 > num2 ? num1 : num2;}public double max(double num1, double num2){return num1 > num2 ? num1 : num2;}public double max(double num1, double num2, double num3){double max1 = num1 > num2 ? num1 : num2;return max1 > num3 ? max1 : num3;}}

可变参数

基本概念

java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。就可以通过可变参数实现。

基本语法

访问修饰符 返回类型 方法名(数据类型... 形参名){}

例子:求和。

//1. int... 表示接受的是可变参数,类型是int,即可以接收多个int(0-多)
//2.使用可变参数时,可以当做数组来使用 即 nums 可以当做数组
//3.遍历nums求和
public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();System.out.println("和为:" + m.sum(1,9,80));}
}
class HspMethod{public int sum(int... nums){int sum = 0;for(int i = 0; i < nums.length; i++){sum += nums[i];}//System.out.println("接收的参数个数= "+ nums.length);return sum;}
}

注意事项和使用细节

  1. 可变参数的实参可以为 0 个或任意多个

  2. 可变参数的实参可以为数组

    例子:

    public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();int[] arr = {1,2,3};m.sum(arr);}
    }
    class HspMethod{public void sum(int... nums){System.out.println("接收的参数个数="+ nums.length);}
    }
    
  3. 可变参数的本质就是数组

  4. 可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后

    public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();m.sum("Str",2,1.0,2.0);}
    }
    class HspMethod{public void sum(String m, int n, double... nums){System.out.println("接收的参数为:" + m + " " + n + " " + nums[0] + " " + nums[1]);}
    }
    
  5. 一个形参列表中只能出现一个可变参数

练习题

有三个方法,分别实现返回姓名和两门课成绩(总分),返回姓名和三门课成绩(总分),返回姓名和五门课成绩(总分)。封装成一个可变参数的方法。

public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();m.showScore("王二",99.5,100);m.showScore("张三",99,100,98.5);m.showScore("李五",99,100,100,100,90.5);}
}
class HspMethod{public void showScore(String name, double... nums){double sum = 0.0;int i = 0;for(; i < nums.length; i++){sum += nums[i];}System.out.println("姓名:" + name );System.out.println("一共有"+ i + "门成绩,课程总成绩为:" + sum);}
}

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

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

相关文章

【Vue】Vue2中的Vuex

目录 Vuex介绍Vuex 中的核心概念 在vue2中使用Vuex安装 Vuex创建一个 Vuex Store在 Vue 实例中使用 Vuex编写 Vuex 的 state、mutations 和 actions在组件中使用 Vuex Vuex的核心State组件中获取 Vuex 的状态mapState 辅助函数对象展开运算符 Getter基本使用示例 通过属性访问通…

从多站点到多活,XEOS 对象数据容灾能力再提升

近日&#xff0c; XSKY SDS V6.4 新版本发布&#xff0c;其中 XEOS V6.4 全新升级并完善了统一命名空间功能&#xff0c;更进一步增强和完善了异地容灾方案&#xff0c;配合强一致代理读&#xff0c;可以实现异地多活&#xff1b;同时大幅降低管理复杂度&#xff0c;有效降低容…

TikTok电商带货特训营,跟随时代潮流,跨境掘金(8节课)

课程内容&#xff1a; 1-先导课 2-一、店铺运营认知与思路 3-二、店铺风控注意事项 4-三、美区Tiktok前期工作-1店铺入驻模式 5-三、美区Tiktok前期工作-2指纹浏览器介绍 6-三、美区Tiktok前期工作-4绑定电话号码 7-三、美区Tiktok前期工作-5添加仓库地址 8-三、美区Ti…

【秒杀系统】从零开始打造简易秒杀系统(一):防止超卖

【秒杀系统】从零开始打造简易秒杀系统&#xff08;一&#xff09;&#xff1a;防止超卖 前言 大家好&#xff0c;好久不发文章了。&#xff08;快一个月了- -&#xff09;最近有很多学习的新知识想和大家分享&#xff0c;但无奈最近项目蛮忙的&#xff0c;很多文章写了一半搁…

深入Java:JSON解析与操作的艺术

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、初识JSON&#xff1a;数据格式的优雅舞者 在现代Web开发中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;以其轻量级和易于阅读的特点成为了数据交换的首选格式。它基于JavaScript的一个…

FreeRTOS_信号量_学习笔记

信号量的特性 消息队列用于传输多个数据&#xff0c;但是有时候我们只需要传递状态&#xff0c;这个状态值需要用一个数值表示。套用队列笔记中的流水线例子&#xff0c;可以理解为流水线上工件的数量。 信号&#xff1a;起通知作用 量&#xff1a;还可以用来表示资源的数量 当…

打印机手动双面打印技巧

一、WORD和PDF &#xff08;1&#xff09;首先选择要打印的页面范围&#xff0c;然后选择仅奇数页打印 &#xff08;2&#xff09;将打印完的纸张翻过来&#xff0c;白纸朝上&#xff0c;纸张的头部先放入打印机 &#xff08;3&#xff09;选择要打印的页面范围&#xff0c;然…

大模型部署_书生浦语大模型 _作业2

本节课可以让同学们实践 4 个主要内容&#xff0c;分别是&#xff1a; 1、部署 InternLM2-Chat-1.8B 模型进行智能对话 1.1安装依赖库&#xff1a; pip install huggingface-hub0.17.3 pip install transformers4.34 pip install psutil5.9.8 pip install accelerate0.24.1…

Elasticsearch之文本分析

文本分析基本概念 官网&#xff1a;Text analysis | Elasticsearch Guide [7.17] | Elastic 官网称为文本分析&#xff0c;这是对文本进行一直分析处理的方式&#xff0c;基本处理逻辑是为按照预先制定的分词规则&#xff0c;把原本的文档进行分割成多个小颗粒度的词项&#x…

如何给出好的“文言一心”指令?

一、文言一心是什么&#xff1f; 在现代技术背景下&#xff0c;“文言一心”还是百度公司创建的一款大语言模型。这款模型基于飞桨深度学习平台和文心知识增强大模型&#xff0c;并拥有强大的中文语料库&#xff0c;可以理解和生成富含文化内涵和哲理的文本内容。其核心技术架构…

社区医院|基于SprinBoot+vue的社区医院管理服务系统(源码+数据库+文档)

社区医院管理服务系统 目录 基于SprinBootvue的社区医院管理服务系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 4医生功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

看花眼,眼花缭乱的主食冻干到底应该怎么选?靠谱的主食冻干分享

随着科学养猫知识的普及&#xff0c;主食冻干喂养越来越受到养猫人的青睐。主食冻干不仅符合猫咪的饮食天性&#xff0c;还能提供均衡的营养&#xff0c;有助于维护猫咪的口腔和消化系统健康。许多猫主人认识到了主食冻干喂养的诸多益处&#xff0c;计划尝试这种喂养方式&#…

C++面向对象程序设计 - 标准输出流

在C中&#xff0c;标准输出流通常指的是与标准输出设备&#xff08;通常是终端或控制台&#xff09;相关联的流对象。这个流对象在C标准库中被定义为std::cout、std::err、std::clog&#xff0c;它们是std::ostream类的一个实例。 一、cout&#xff0c;cerr和clog流 ostream类…

echarts(6大基础图表)的使用

目录 一、vue2挂载 二、柱状图 2.1、基础柱状图介绍 2.2、标记&#xff1a;最大值\最小值(markPoint)、平均值(markLine) 2.3、显示&#xff1a;数值显示(label)、柱子宽度(barWidth)、横向柱状图 三、折线图 3.1、标记&#xff1a;最大值\最小值(markPoint)、平均值(ma…

android11禁止进入屏保和自动休眠

应某些客户要求&#xff0c;关闭了开机进入屏保&#xff0c;一段时间会休眠的问题。以下diff可供参考&#xff1a; diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/value…

常见5大开发进度盲点问题及解决方案

在软件开发项目中&#xff0c;识别并解决常见的进度管理盲点问题&#xff0c;对于确保项目按时、按预算、高质量完成至关重要。它直接关系到项目能否顺利进行&#xff0c;忽视任何一个问题&#xff0c;都可能导致项目延期、成本超支、质量下降&#xff0c;甚至项目失败。 因此&…

香橙派华为昇腾CANN架构编译opencv4.9

香橙派华为升腾AI盒子 为啥要编译opencv4.9.0&#xff0c; 因为在4.9.0 中增加了华为昇腾CANN的外接开发库&#xff0c;下图为盒子外观&#xff0c;此次一接到这个盒子&#xff0c;立刻开始开箱操作&#xff0c;首先就是要编译opencv4.9&#xff0c;以前在香橙派3588 的盒子中…

大模型应用:LLM基本原理及应用场景

1.背景 23年以来&#xff0c;随着OpenAI公司的ChatGPT横空出世&#xff0c;大模型一词开始火爆全球。国内外以OpenAI、Google、百度、阿里、字节等大厂为代表&#xff0c;相继推出一系列大模型及其应用&#xff0c;涉及社交、问答、代码助手等多个方面。 目前主流的大模型及产…

Echarts - 多个页面内有N个 echarts 图表,封装组件 CommonEcharts 快捷实现

目录 子组件父组件使用注意 option 文件效果展示相关数据处理&#xff08;代码备份 - 可不看&#xff09;数据处理后页面展示 子组件 CommonEcharts.vue <template><div><div v-for"id in domId" :id"id" :key"id" class"…

go select

select 是与 switch 相似的控制结构&#xff0c;与 switch 不同的是&#xff0c;select 中虽然也有多个 case&#xff0c;但是这些 case 中的表达式必须都是 channel 的收发操作。 select 能够让 goroutine 同时等待多个 channel 可读或者可写&#xff0c;在多个 channel 状态改…