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

注意事项和细节

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

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

  3. 可变参数的本质就是数组

    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);
    	}
    }
    
  4. 可变参数可以和普通类型(非可变参数)的参数一起放在形参列表中,但必须保证可变参数在最后

  5. 一个形参列表中只能出现一个可变参数

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

运行效果

image-20220119152411385

posted @   DL50  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示