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

本文详细介绍了Java 1.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值