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;有效降低容…

Nginx中的limit_req模块和limit_conn模块详解

引言 在高流量场景下&#xff0c;良好的限流和连接控制策略至关重要&#xff0c;以防止服务器过载&#xff0c;确保服务稳定性和高可用性。Nginx 提供了 limit_req 和 limit_conn 模块&#xff0c;用以实现请求频率和并发连接数的限制。本文将详细介绍这两个模块的生效阶段和生…

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

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

GIS读研与求职准备:植被定量遥感专业研0

本文介绍植被定量遥感专业研究生入学初期&#xff0c;为将来从事开发类工作所作求职准备的规划路径、方向选择等方面的建议。 前面提到了&#xff0c;最近有很多师弟师妹询问关于研究生方向选择、求职准备等方面的问题。因为很多朋友的提问比较有共性&#xff0c;所以会在征得对…

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

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

redis笔记1

1-nosql&#xff08;非关系型数据库&#xff09; 定位缓存&#xff0c;提高数据读写速度&#xff0c;减轻对数据储存与访问压力&#xff0c;不建议存敏感数据&#xff08;重要数据&#xff09;。 2-特征 &#xff08;1&#xff09;键值&#xff08;key-value&#xff09;型 &a…

【面试】Oracle JDK和Open JDK什么关系?

目录 1. 起源与发展2. 代码与许可3. 功能与组件4. 使用场景5. 版本更新与支持 1. 起源与发展 1.Oracle JDK是由Oracle公司基于Open JDK源代码开发的商业版本。2.Open JDK是java语言的一个开源实现。 2. 代码与许可 1.Oracle JDK包含了闭源组件&#xff0c;并根据二进制代码许…

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

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

用最通俗的话理解什么是协程

参考&#xff1a; 用最通俗的话理解什么是协程-CSDN博客

FreeRTOS_信号量_学习笔记

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

打印机手动双面打印技巧

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

oracle.jdbc.OracleDatabaseException: ORA-00911: 无效字符

先吐槽一句&#xff0c;oracle 真坑啊&#xff01; 一个很正常的sql 语句一直报 ORA-00911: 无效字符 &#xff0c;拿到数据库去执行一点问题没有&#xff0c;一运行代码就报错&#xff0c;然后一个字符一个字符的对比&#xff0c;竟然是因为sql 结尾的一个 ";" 导致…

TP6开发文档概述

TP6&#xff08;ThinkPHP 6&#xff09;是一个使用PHP语言开发的快速、兼容且简单的面向对象开发框架。以下是一个简化的TP6开发文档概述&#xff0c;涵盖了核心功能和一些常用方法&#xff1a; 一、环境准备 PHP安装&#xff1a;确保已经安装了与TP6兼容的PHP版本。 Composer…

PHPIPAM在建立数据库阶段报错

如题&#xff0c;参考大佬的操作IP地址管理系统phpipam部署-CSDN博客搭建PHPIPAM&#xff0c;不过我没有选择1.4&#xff0c;而是直接搭建了1.6版本&#xff0c;一切顺利&#xff0c;到了最后建立数据库阶段&#xff0c;输入数据库账号和密码后提示Cannot install sql SCHEMA f…

大模型部署_书生浦语大模型 _作业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…

Python pands使用引擎实现excel条件格式

截至我的知识更新日期&#xff08;2023年&#xff09;&#xff0c;Pandas 库本身并不直接支持Excel条件格式。Pandas 是一个强大的Python数据分析库&#xff0c;它主要用于数据分析和操作&#xff0c;而不是用于创建或编辑Excel文件的格式。 然而&#xff0c;你可以使用 openp…

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

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

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

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