java:参数数量可变的方法

在java SE5.0之后提供了可以用可变的参数数量调用的方法(有时称为“变参”方法)

我们用最常见的printf方法举例,列如:

    	System.out.printf("%d", n);
    	System.out.printf("%d %s", n,"widgets");

在上面的两条语句中,尽管一个调用包含两个参数,另一个调用包含三个参数,但他们调用的是同一个方法。

printf是这样定义的:

    public class PrintStream{
    	public PrintStream printf(String fmt,Object...args) {return format(fmt,args);}
    }

这里的省略号是java代码的一部分,它表明这个方法可以接收任意数量的对象(除fmt参数之外)

实际上,printf方法接收两个参数,一个是格式字符串,另一个是Object[]数组,其中保存着所有的参数(如果调用者提供的是整型数组或者其他基本类型的值,自动装箱功能将把他们转换成对象)。现在将扫描fmt字符串,并将第i个格式说明符与args[i]的值匹配起来。

换句话说,对于printf的实现者来说,Object...参数类型与Object[]完全一样。

用户可以自己定义可变参数的方法,并将参数指定为任意类型,甚至是基本类型。

实例(计算若干个数值的最大值):

	public static double max(double...values) {
		double largest=Double.NEGATIVE_INFINITY;
		for(double v : values) if(v>largest) largest=v;
		return largest;
	}

可以像下面这样调用这个方法:

		double m=max(3.1,40.4,-5);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值