Java中的可变参数

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

例如:

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

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

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

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

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

 public void testSum() {
int[] nums = {1,2,3,4,5};
System.out.println(sum(nums));
} public int sum(int ...nums) {
int sum = 0;
for(int i:nums) {
sum +=i;
}
return sum; }

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

  

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

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

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

输出:

  

再来一个简单的例子:

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

输出:

  

最后一个例子:

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

输出:

  

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

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

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

输出:

  

  

最新文章

  1. github免输用户名/密码SSH登录的配置
  2. 【已解决】新搭建的VPN服务器客户端无法正常连接
  3. Mac下搭建android开发环境
  4. JS 页面加载触发事件 document.ready和window.onload的区别
  5. supersr--时间显示逻辑-->NSDate+NSCalendar
  6. android之RadioGroup
  7. Rigidbody SweepTest测试
  8. Font Awesome字体图标
  9. Python基础教程【读书笔记】 - 2016/8/3
  10. 解决从linux本地文件系统上传文件到HDFS时的权限问题
  11. JS双击div编辑文本内容
  12. GlusterFS 安装 on centos7
  13. css实现垂直居中的方法整理
  14. BN层
  15. ftp sftp vsftp
  16. VS快捷键以及Reshaper快捷键
  17. websocket 缺点
  18. python新手第一天学习笔记-第一个ptyhon程序和python变量
  19. Refactoring之——代码的坏味道(四)过长参数列
  20. 【Java】String和Date、Timestamp之间的转换

热门文章

  1. new Intent(String action,Uri uri)构造器说明
  2. Android:ServiceDemo
  3. [转]如何从MySQL官方Yum仓库安装MySQL5.6
  4. 高性能的JavaScript--加载和执行[转]
  5. [转]TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
  6. 432B - Football Kit
  7. 基于visual Studio2013解决C语言竞赛题之0502最小数替换
  8. 基于visual Studio2013解决C语言竞赛题之0501挑选素数
  9. 多个线程怎样操作同一个epoll fd
  10. webform--常用的控件