可变参数,在我看来,它就是对参数的个数无限制,视传入参数的个数而定;
让我们一起先看看程序吧
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class Demo4 {
@Test
public void testSum() {
// TODO Auto-generated method stub
//sum(1,2,3,4,5,6);
int arr[]={1,2,3,4,5,6};
sum(arr);
}
public void sum(int ...nums){
int sum=0;
for(int i:nums){
sum+=i;
}
System.out.println(sum);
}
@Test
public void testaa(){
aa(1,2,3,4,5);
}
public void aa(int x,int ...nums){
}
@Test
public void bb(){
List list=Arrays.asList("1","2","3");
//Array.asList里装的是对象数组
System.out.println(list);
String arr[]={"1","2","3","4"};
list=Arrays.asList(arr);
System.out.println(list);
Integer num[]={1,2,3,5};
list=Arrays.asList(num);
System.out.println(list);
}
}
结果是:<pre name="code" class="java">21
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 5]
<span style="white-space: pre; "> int</span> ...nums可以说是可变参数的标志(可以传入n多个参数)sum方法的形参是int ...nums,在它的测试方法里sum(1,2,3,4,5,6)和sum(arr)都可以,说明实参可以是几个数也可以是一个同类型的数组。
<span style="white-space:pre"> </span>若有单个形参与可变参数同时作为变量,则将单个形参放在前面,只有这样,才能给单个形参赋值,很好理解int ..nums本就是无限个参数,所以如将单个形参放在后面,他就无法接受实参。
<span style="white-space:pre"> </span>Array.asList顾名思义,把数组"变成"list中添加的是对象数组。