jdk新特性之可变参数

Jdk1.5新特性之可变参数

在java SE5.0之前的版本中,每个java方法都有固定数量的参数。但从java SE5.0之后,java允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。格式是在定义一个方法时,在最后一个形参类型后增加三个点(...),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

 如果有这样一个需求,就是计算两个数之和,很容易我们会想到这么做,如以下代码:

public static void main(String[] args) {

int sum=add(4,5);

System.out.println("累加和:"+sum);

}

  private static int add(int i, int j) {

return i+j;

}

但如果要计算三个数之和呢?很容易想到方法的重载,即在定义个add方法,让它接受三个参数,但如果需求不确定呢,不知道要几个数相加呢?那怎么办?你该定义几个参数的方法呢?

因此jdk1.5出现了一种新方法可变参数。上面代码可以写成这样:

public static void main(String[] args) {

int sum=add(4,5);

System.out.println("累加和:"+sum);

}

private static int add(int...arr) {

int sum=0;

for(int i:arr){

sum+=i;

}

return sum;

}

还有一种定义如下:

public static void main(String[] args) {

int sum=add(4,5,7);

System.out.println("累加和:"+sum);

}

private static int add(int a,int...arr) {

int sum=0;

for(int i:arr){

sum+=i;

}

sum+=a;

return sum;

}

可以看到方法定义参数时,在可变参数前面还定义了一个参数,这是允许的,并且前面可以定义n多个参数,但是需要注意的是,在可变参数的后面是不能在定义参数的,也就是说,可变参数只能出现在最后一个参数出现在形参当中,这样也就说明了一个方法中最多只能有一个可变的形参。

其实在jdk1.5之前也是可以解决上述的问题的,那时候的可变参数使用数组来代替的,由此上面的代码可以写成这样子:

public static void main(String[] args) {

int sum=add(new int[]{4,5,7});

System.out.println("累加和:"+sum);

}

private static int add(int[] arr) {

int sum=0;

for(int i:arr){

sum+=i;

}

return sum;

}

jdk1.5之前是这样做的,当然那时候也没有增强for循环了,不过我只是举这个例子来说,读者不需要太纠结了。其实就我的理解,可变参数内部实现的也是个数组,为什么这么说呢?因为你可以对它用增强for迭代,而且还可以利用索引取值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值