可变参数
可变参数可以当成一个数组使用
public void sum(int ...nums){ int sum = 0; for(int i:nums) { sum +=i; } System.out.println(sum); } @Test public void testSum() { sum(1,2,3,4,5); }
可变参数的实参可以是数组(同上)
@Test public void testSum() { int arr[] ={1,2,3,4,5}; sum(arr); }
如果一个方法包含可变参数,那么可变参数一定是最后一个参数
比较下面三个例子
@Test public void testSum() { List list =Arrays.asList("1","2","3","4"); System.out.println(list); } //结果是 // [1, 2, 3, 4] @Test public void testSum() { List list =Arrays.asList(1,2,3,4); System.out.println(list); } //结果是 // [1, 2, 3, 4] @Test public void testSum() { int nums[] = {1,2,3,4,5}; List list =Arrays.asList(nums); System.out.println(list); } //结果是 // [[I@2866bb78]
public static <T> List<T> asList(T... a)
可以看出asList的参数是可变参数,且是对象(T是泛型,可以理解为Object)
例一和例二都是直接传入了几个对象(其中例二用到了封箱)
例三是传入了一个数组对象(基本数据类型数组就是一个特殊的对象)
对于可变参数,一定要注意参数是基本数据类型还是对象类型
文章前面开头的例子是基本数据类型,后面的是对象类型