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);
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

26计算机操作系统408考研--操作系统处理机调度篇章(五)

文章目录 一、调度简介死锁一、调度简介 计算机系统中,处理器和内存资源会出现供不应求的情况,特别是多个I/O设备与主机交互,作业不断进入系统,或者是多个批处理作业在磁盘的后备队列中等待进入内存的情况。操作系统在管理有限的资源的同时,需要考虑如何选取进入内存的作…

Python-3.12.0文档解读-内置函数map()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 详细说明 map(function, iterable, *iterables) 参数 返回值 示例 注意事项 参考…

数据结构初阶 栈

一. 栈的基本介绍 1. 基本概念 栈是一种线性表 是一种特殊的数据结构 栈顶&#xff1a;进行数据插入和删除操作的一端 另一端叫做栈底 压栈&#xff1a;插入数据叫做压栈 压栈的数据在栈顶 出栈&#xff1a; 栈的删除操作叫做出栈 出栈操作也是在栈顶 栈遵循一个原则 叫做…

NXP i.MX8系列平台开发讲解 - 3.13 Linux 之Audio子系统(二)

专栏文章目录传送门&#xff1a;返回专栏目录 目录 1. Linux ALSA 内核框架 2. Linux ALSA 代码分析 2.1 声卡驱动初始化 2.2 声卡创建注册 2.3 PCM设备创建 3. ALSA ASoC 3.1 Machine 3.2 Platform 3.3 Codec 上一章节&#xff0c;对于Linux Audio子系统有了大概的了解…

58. UE5 RPG AI行为树的装饰器

书接56. UE5 RPG 给敌人添加AI实现跟随玩家&#xff0c;我们实现了AI一些基础设置&#xff0c;并实现了获取敌人附近的玩家实现了跟随功能 接下来&#xff0c;我们将实现区分职业&#xff0c;并根据职业不同设置不同的攻击距离&#xff0c;并且根据职业实现不同的技能施放。 …

【启程Golang之旅】基本变量与类型讲解

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…

若依启动run-modules-system.bat报错问题解决方案

在启动run-modules-system.bat时遇到了一些问题,在网上搜索无果后,排查解决完毕 1.启动nacos时,报错如下 Error creating bean with name grpcClusterServer: Invocation of init method failed; nested exception is java.io.IOException: Failed to bind to address 0.0.0.0…

场景题11111

关单操作&#xff1f; 优先考虑定时任务、Redissonredis、RocketMQ延迟消息实现&#xff08;订单量特别大的时候&#xff0c;不建议使用MQ&#xff09; 每个订单都有一个消息会增加资源消耗可靠性问题&#xff08;丢失&#xff09;大量的无效消息不是所有消息队列都支持一般通…

【JAVA |图书管理系统】JAVA实现图书管理系(附完整代码)

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

行车安全:UWB模块的智能化在车辆安全系统中的作用

随着交通车辆数量的不断增加和道路交通拥堵的加剧&#xff0c;车辆安全问题日益引起人们的关注。在这种背景下&#xff0c;超宽带&#xff08;UWB&#xff09;技术作为一种新兴的定位技术&#xff0c;正逐渐应用于车辆安全系统中&#xff0c;为提高车辆行车安全性提供了新的解决…

Day 5:2785. 将字符串中的元音字母排序

Leetcode 2785. 将字符串中的元音字母排序 给你一个下标从 0 开始的字符串 s &#xff0c;将 s 中的元素重新 排列 得到新的字符串 t &#xff0c;它满足&#xff1a; 所有辅音字母都在原来的位置上。更正式的&#xff0c;如果满足 0 < i < s.length 的下标 i 处的 s[i] …

AD23中一些好用的功能

1.关闭在线DRC功能&#xff0c;可以避免布线时候一卡一卡的问题&#xff1a; 取消在线DRC的勾选&#xff1a; 2.AD的在线封装库&#xff0c;非常好用&#xff1a; 如何优雅地服用AD 21的在线元件库 – 吴川斌的博客 (mr-wu.cn) 3.如何恢复Altium Designer23默认窗口布局 打开…

go语言基准测试Benchmark 最佳实践-冒泡排序和快速排序算法基准测试时间复杂度对比

在go语言中Benchmark基准测试( 在后缀为_test.go的文件中&#xff0c;函数原型为 func BenchmarkXxx(b *testing.B) {}的函数 )可以用来帮助我们发现代码的性能和瓶颈&#xff0c; 其最佳实践 应该是我们最常用的 冒泡排序和快速排序的测试了&#xff0c;废话不说&#xff0c;直…

Oracle实践|内置函数之日期与时间函数

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

shell脚本的基础应用

规范脚本的构成 #&#xff01;/bin/bash # 注释信息 可执行的语句 执行脚本的方法 有1.添加x权限 ,绝对路经&#xff0c;或者相对路径2. 使用解释器 不需加x,root...bash...bash..echo 3,用source&#xff0c; 开机root ...bash ...echo bash -x /opt/test01.sh &#xff…

Linux防火墙(以iptables为例)

目录 Linux配置防火墙1. 引言2. 什么是防火墙3. Linux中的防火墙3.1 iptablesiptables命令参数常用方式&#xff1a;3.1.1 安装iptables3.1.2 配置iptables规则3.1.3 示例一&#xff1a;使用iptables配置防火墙规则4. iptables执行过程 Linux配置防火墙 1. 引言 在互联网时代&…

python练习题-反转一个只有三位数的整数

【问题描述】&#xff1a;反转一个只有三位数的整数 [示例]&#xff1a;123 321 完整代码如下&#xff1a; nint(input()) if n<100 or n>999: print("请输入三位数&#xff01;") else: gen%10 shin//10%10 bain//100 m100*ge10*shibai…

Function Calling学习

Function Calling第一篇 Agent&#xff1a;AI 主动提要求Function Calling&#xff1a;AI 要求执行某个函数场景举例&#xff1a;明天上班是否要带伞&#xff1f;AI反过来问你&#xff0c;明天天气怎么样&#xff1f; Function Calling 的基本流程 Function Calling 完整的官…

AI日报:百度发布文心大模型学习机;Open-Sora 1.1可生成21秒视频;Canva可以自动剪辑视频了;超牛ComfyUI节点AnyNode来了

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南&#xff0c;每天我们为你呈现AI领域的热点内容&#xff0c;聚焦开发者&#xff0c;助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解&#xff1a;AIbase - 智能匹配最适合您的AI产品和网站 1、百度文心…

ctfshow web入门 web306--web310源码审计

web306 这和之前的完全不一样了 <?php #error_reporting(0); session_start(); require service.php;$username$_POST[userid]; $userpwd$_POST[userpwd]; $servicenew service();$user$service->login($username,$userpwd); if($user){setcookie(user,base64_encode(…