java学习之可变参数

目录

一、定义

二、基本语法

三、入门案例

方法重载的代码

可变参数代码

四、使用细节


一、定义

java允许将同一个类中多个同名同功能参数个数不同的方法,封装成一个方法。可以通过可变参数实现。

二、基本语法

访问修饰符 返回类型方法名(数据类型...形参名){//...是规定好的,不能乱写

}

三、入门案例

求n个整数的和

方法重载的代码

public class VarParameter01 {
	public static void main(String[] args){
		HspMethod m = new HspMethod();
		System.out.println(m.sum(1, 34));
		System.out.println(m.sum(10, 22, 89));
	}
}
class HspMethod{
	/*public int sum(int n1, int n2){
		return n1 + n2;
	}
	public int sum(int n1, int n2, int n3){
		return n1 + n2 + n3;
	}
	public int sum(int n1, int n2, int n3, int n4){
		return n1 + n2 + n3 + n4;
	}
	
}

方法名和功能相同,参数个数不同的情况下可以用可变参数优化

可变参数代码

public class VarParameter01 {
	public static void main(String[] args){
		HspMethod m = new HspMethod();
		System.out.println(m.sum(1, 34, 56));
		System.out.println(m.sum());
	}
}
class HspMethod{
	public int sum(int... nums){
		System.out.println("接收的参数个数=" + nums.length);
		int sum = 0;
		for(int i = 0; i < nums.length; i++){
			sum += nums[i];
		}	 
		return sum;
	}
}

代码分析:

      1.int...表示接受的是可变参数,类型是int,即可以接收多个int(0-多)
      2.使用可变参数时,可以当做数组来使用,即把nums当做数组
      3.遍历nums求和即可

四、使用细节

1.可变参数的实参个数可以是0个或任意多个

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

代码说明

public class VarParameterDetail {
	public static void main(String[] args){
		//可变参数的实参可以是数组
		int[] arr = {23, 33, 21};
		HspMethod m = new HspMethod();
		m.sum(arr);

	}
}
class HspMethod{
	
	public void sum(int... nums){
		System.out.println("接收的参数个数=" + nums.length);
		
	}
}

传入的实参为数组arr

编译运行结果

 

也可以传入二维数组,将形参列表变成(int[]... nums)

public class VarParameterDetail {
	public static void main(String[] args){
		//可变参数的实参也可以是二维数组
		int[][] arr2 = {{1, 2, 4},{1, 2, 4},{1, 2, 4},{1, 2, 4}};
		A04 a4 = new A04();
		a4.f1(arr2);
	}
}
class A04{
	//二维数组
	public void f1(int[]... nums){
		System.out.println("长度=" + nums.length);
	}
}

运行结果

 

 

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

4.可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后

代码

public void f1(double...nums, int n1){//

	}

编译错误

 5.一个形参列表中只有一个可变参数

编译运行结果 

 

 

五、练习题
    有三个方法, 分别实现返回姓名和两门课成绩(总分),
    返回姓名和三门课成绩(总分), 返回姓名和五门课成绩(总分) 。
    封装成一个可变参数的方法
 

public class VarParameterExercise {
	public static void main(String[] args){
		HspMethod t1 = new HspMethod();
		t1.showScore("小明", 34.5, 67.8);
		t1.showScore("小红", 64.5, 67.8, 89.4);
		t1.showScore("小蓝", 34.5, 67.8, 89.4, 90.3);
		t1.showScore("小蓝", 34.5, 67.8, 89.4, 90.3);
	}
}
class HspMethod{
	/*
	有三个方法, 分别实现返回姓名和两门课成绩(总分),
	返回姓名和三门课成绩(总分), 返回姓名和五门课成绩(总分) 。
	封装成一个可变参数的方法
	*/
	public void showScore(String s1, double...scores){
		double sum = 0;
		for(int i = 0; i < scores.length; i++){
			sum += scores[i];
		}
		System.out.println(s1 + "的" + scores.length + "门的成绩总分为" + sum);
		

	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值