当前位置: 首页 > news >正文

知识改变命运:Java 语言 【可变参数】

可变参数

概念:Java允许一个类中多个同名同功能但是参数不同的方法,封装为一个方法。

基本语法:
访问修饰符 返回值 方法名 (数据类型...参数名) {
......
}

案例:写一个类名DyMethod 方法名sum 计算两个整数和,三个整数和,四个整数和。

public class DyMethod {public static void main(String[] args) {DyMethod s1=new DyMethod();s1.sum(1,2);s1.sum(1,2,3);s1.sum(1,2,3,4);}public int sum(int a,int b) {return  a+b;}public int sum(int a,int b,int c) {return  a+b+c;}public int sum(int a,int b,int c,int d) {return  a+b+c+d;}}

我们上面代码可以使用重载的方法来实现,但是这样的代码特别无聊,他们完成的功能都是大同小异,如果我们要求5个,6个,甚至更多呢,接下来我们用可变参数优化下。

public class DyMethod {public static void main(String[] args) {DyMethod s1 = new DyMethod();s1.sum(1, 2);s1.sum(1, 2, 3);s1.sum(1, 2, 3, 4);}public int sum(int... x) {int sum=0;for (int i = 0; i < x.length; i++) {sum+=x[i];}return sum;}
}
//int...表示可接受可变参数,类型是int,可接受(0到n个int值)
//可变参数x可以当作数组来使用,即x当作数组

这样我们就利用参编参数简化了代码

可变参数注意到事项和细节

1.可变参数的实参可以是0到多个
2.可变参数可以传参数组

		int [] arr={1,2,3,4,5};System.out.println(s1.sum(arr));public int sum(int... x) {int sum=0;for (int i = 0; i < x.length; i++) {sum+=x[i];}return sum;}

3.可变参数实质是数组
4.可变参数可以跟其他普通类型参数一起出现,但是可变参数必须在参数最后

public int sum(int a,Stuent... x)

5.一个方法里面只能有一个可变参数

public int sum(int...a,Stuent... x)//报错

练习:有三个方法,返回姓名+2门成绩和,返回姓名+3门成绩和,返回姓名+4门成绩和,封装成一个方法。

public String sum(String name,int...score) {int sum=0;for (int i = 0; i < score.length; i++) {sum+=score[i];}return "姓名"+name+"成绩"+sum;}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【竞品分析】案例分析:直播类竞品分析,理解什么是竞品。
  • 怎样在 SQL 中创建视图(VIEW),以及视图的作用和优势是什么?
  • 【递归 + 记忆化搜索优化】力扣494. 目标和
  • Linux小组件:makefile
  • 基于单片机的智能风扇设计
  • DLMS/COSEM中的信息安全:安全密钥(中)续2
  • Rust:基于cxx的 C++ 混合编程,字符串参数的转换方法
  • 【JS开源库】基于最小二乘法的离散点拟合圆形,计算圆心坐标和半径
  • 关于redisson的序列化配置
  • vs code 插件: Crabviz
  • MAC上设置快捷打开终端以及如何运用剪切快捷键
  • 编程-设计模式 2:抽象工厂模式
  • YOLO好像也没那么难?
  • Windows图形界面(GUI)-MFC-C/C++ - CSliderCtrl
  • 沪深300股指期货如何操作套期保值?
  • 《Java编程思想》读书笔记-对象导论
  • 2019.2.20 c++ 知识梳理
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • C语言笔记(第一章:C语言编程)
  • markdown编辑器简评
  • Meteor的表单提交:Form
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • nginx 配置多 域名 + 多 https
  • nodejs:开发并发布一个nodejs包
  • Python爬虫--- 1.3 BS4库的解析器
  • RxJS: 简单入门
  • Tornado学习笔记(1)
  • vue-cli3搭建项目
  • 闭包--闭包之tab栏切换(四)
  • 基于 Babel 的 npm 包最小化设置
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端自动化解决方案
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 【干货分享】dos命令大全
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • (10)ATF MMU转换表
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (笔试题)分解质因式
  • (二)丶RabbitMQ的六大核心
  • (十七)Flink 容错机制
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (正则)提取页面里的img标签
  • (转)http协议
  • (转)ObjectiveC 深浅拷贝学习
  • .cfg\.dat\.mak(持续补充)
  • .NET使用存储过程实现对数据库的增删改查
  • /etc/motd and /etc/issue
  • [ IDE ] SEGGER Embedded Studio for RISC-V
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [BROADCASTING]tensor的扩散机制
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • [FlareOn6]Overlong
  • [flink]部署模式