JDK1.5后的新特性之一:可变参数

  Java中的可变参数

  Java1.5后出现了一个新特性,即可变参数,格式为:类型 …参数

例如:

  总的来说,可变参数可以当成是数组来用:

 1 public void testSum() {
 2         System.out.println(sum(1,2,3,4,5));
 3     }
 4     
 5 public int sum(int ...nums) {
 6         int sum = 0;
 7         for(int i:nums) {
 8             sum +=i;
 9         }
10         return sum;    
11     }

  如果方法参数中不止有可变参数,还有别的类型的参数,那么可变参数应该放到方法列表中的最后才不会报错:

 1 public void testSum() {
 2         System.out.println(sumPlusX(100,1,2,3,4,5));
 3     }
 4     
 5 public int sumPlusX(int x,int ...nums) {
 6         int sum = 0;
 7         for(int i:nums) {
 8             sum +=i;
 9         }
10         return sum+x;
11         
12     }

  可以直接用数组来满足参数是可变参数的方法:

 1 public void testSum() {
 2         int[] nums = {1,2,3,4,5};
 3         System.out.println(sum(nums));
 4     }
 5     
 6 public int sum(int ...nums) {
 7         int sum = 0;
 8         for(int i:nums) {
 9             sum +=i;
10         }
11         return sum;
12         
13     }

  最后我们再来看一看比较典型的采用可变参数的方法,在数组工具类Arrays中的asList方法:

  

  从方法参数列表可以看到这也是一个可变参数,接收的是对象,记住是对象!等下我们就可以看到为什么这样强调了。

我们先来一个简单的例子:

1 public void testAsList() {
2         List list = Arrays.asList("1","2","3");
3         System.out.println(list);
4     }

输出:

  

再来一个简单的例子:

1 public void testAsList() {
2         String[] str = {"1","2","3","4"};
3         List list = Arrays.asList(str);
4         System.out.println(list);
5     }

输出:

  

最后一个例子:

1 public void testAsList() {
2         int[] nums = {1,2,3,4,5};
3         List list = Arrays.asList(nums);
4         System.out.println(list);
5     }

输出:

  

  前面说过,可以将可变参数当成数组来处理,也可以用数组来满足参数列表为可变参数,对于可变参数是类型来说,对象数组依然可以满足可变参数,但是基本类型数组,因为数组中的元素并不是类型对象,所以只能将整个数组作为一个对象,因此就出现上面第三种情况。

  当然如果我们将上面的例子将基本类型改变为其对象包装类,那么就又可以了:

1 public void testAsList() {
2         Integer[] nums = {1,2,3,4,5};
3         List list = Arrays.asList(nums);
4         System.out.println(list);
5     }

输出:

  

  

原文地址:https://www.cnblogs.com/fjdingsd/p/5272079.html