JAVA 可变参数
可变参数
java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。就可以通过可变参数实现
基本语法
访问修饰符 返回类型 方法名(数据类型... 形参名){
}
例如:
类 HspMethod,方法 sum 【可以计算 2 个数的和,3 个数的和 , 4. 5】
package VarParameter_Practice;
public class VarParameter01 {
public static void main(String[] args) {
HspMethod hm = new HspMethod();
int sum = hm.sum(1,2,3);
System.out.println("sum = " + sum);
}
}
class HspMethod{
//1.int... 表示接受的可变参数类型,可以接受多个int 0~多
//2.使用可变参数时可以,可以当做数组来使用,即num 可以当做数组
//3.遍历nums 求和即可
public int sum(int... nums){
int sum = 0;
System.out.println("接受的参数个数=" + nums.length);
for (int i = 0; i < nums.length; i++) {
sum +=nums[i];
}
return sum;
}
}
注意事项和细节
-
可变参数的参数可以为0个或者任意多个。
-
可变参数的实参可以为数组
-
可变参数的本质就是数组
package VarParameter_Practice; public class VarParameterDetail { private static Object object; public static void main(String[] args) { //可变参数的实参可以是数组 int[] array = {1,2,3}; T t1 = new T(); t1.f1(array); } } class T{ public void f1(int... nums) { System.out.println("长度=" + nums.length); } }
-
可变参数可以和普通类型(非可变参数)的参数一起放在形参列表中,但必须保证可变参数在最后
-
一个形参列表中只能出现一个可变参数
package VarParameter_Practice;
public class VarParameterDetail {
private static Object object;
public static void main(String[] args) {
//可变参数的实参可以是数组
int[] array = {1,2,3};
T t1 = new T();
t1.f1(array);
t1.f2(3,4.5,6.0);
}
}
class T{
public void f1(int... nums) {
System.out.println("长度=" + nums.length);
}
public void f2(double d1,double... nums) {
System.out.println("长度=" + nums.length);
System.out.print(d1 + " ");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] +" ");
}
}
}
练习
题目:有三个方法,分别实现返回姓名和两门课成绩(总分), 返回姓名和三门课成绩(总分),返回姓名和五门课成绩(总分)。 封装成一个可变参数的方法
package VarParameter_Practice;
public class VarParameterExercise {
public static void main(String[] args) {
MethodTool tool = new MethodTool();
System.out.println(tool.showScore("小龙", 78,100,90,99.9));
System.out.println(tool.showScore("小王", 79,100,90,99.9,99,66));
System.out.println(tool.showScore("小王", 79,100,90,99.9,99,66));
}
}
class MethodTool{
/*
* 有三个方法,分别实现返回姓名和两门课成绩(总分),
* 返回姓名和三门课成绩(总分),
* 返回姓名和五门课成绩(总分)。
* 封装成一个可变参数的方法
*/
public String showScore(String name,double... scores) {
double sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
String ret = name +"有"+scores.length+ "课的总成绩为:"+ sum;
return ret;
}
}
运行效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具