JDK1.5后的新特性之一:可变参数
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);
}
输出:

JDK1.5后的新特性之一:可变参数的更多相关文章
- 黑马程序员_Java基础:JDK1.5后的新特性:自动拆装箱,以及注意事项
------- android培训.java培训.期待与您交流! ---------- 首先来看一段代码: Integer x = new Integer(4); Integer y = 4; 在JD ...
- jdk1.5新特性之------->可变参数
/* jdk1.5新特性之------->可变参数 需求: 定义一个函数做加法功能(函数做几个数据 的加法功能是不确定). 可变参数的格式: 数据类型... 变量名 可变参数要 注意的细节: 1 ...
- JDK5新特性之 可变参数的方法
可变参数的方法:不知道这个方法该定义多少个参数 注意: > 参数实际上是数组 > 必须写在参数列表最后一个 package cn.itcast.day24.varparam; import ...
- JDK5新特性:可变参数方法
JDK1.5增加可变参方法,其定义格式为: 访问修饰符 返回值类型 方法标识符(参数类型 参数标识符1,参数类型 参数标识符2,参数类型...参数标识符){} 如可能要定义一个求和功能的方法,但求和的 ...
- C++11新特性之五——可变参数模板
有些时候,我们定义一个函数,可能这个函数需要支持可变长参数,也就是说调用者可以传入任意个数的参数.比如C函数printf(). 我们可以这么调用. printf(); 那么这个函数是怎么实现的呢?其实 ...
- JDK5的新特性之可变参数&Arrays.asList()方法
[代码] package com.hxl; import java.util.Arrays; import java.util.List; public class Test { public sta ...
- java新特性之可变参数
public class NewDemo01 { public static void main(String[] args) { System.out.print(" ...
- JDK5 新特性之 可变参数的方法(2)---asList
> Arrays.asList(T - a)方法的使用 >UnsupportedOperationException分析 Arrays.asList(T - a)方法的使用 pac ...
- 总结:JDK1.5-JDK1.8各个新特性
JDK1.5-JDK1.8各个新特性 JDK各个版本的新特性 要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.以下介绍一下JDK1 ...
随机推荐
- XCode 6 出现 no identity found: Command /usr/bin/codesign failed with exit code 1 解决方法汇总
1, 解决办法,进入开发者账号重建一个 Provisioning Profiles(或配套证书) 文件,把证书添加正确就可以了 (应该是最有效的) 2, 将p12文件重新安装下 3, 在 iPhone ...
- FileDescriptor
FileDescriptor 在java中的java.io包下面 public final class FileDescriptor { ... } 官方的解释: 文件描述符类的实例用作与基础机器有关 ...
- Week8(10月31日):并发
Part I:提问 =========================== 1. 更新关联.删除关联数据,需要注意哪些问题?以Instructor类为例说明. 2. 已知某请假系统,请实现以下界面的 ...
- 模拟Struts2的AOP实现
在Struts2中有拦截器的概念,通过它的拦截器可以拦截Action.Struts2的拦截器是通过AOP来实现的,在Spring也有类似的概念.下面的我们先来比较一下Struts2和Spring中AO ...
- python爬虫实战2百度贴吧爬html
转自:http://blog.csdn.net/wxg694175346/article/details/8927832 import string, urllib2 #定义百度函数 def baid ...
- 转:Bootstrap研究 精巧的网格布局系统
本网格布局系统属于Scaffolding(框架,布局)部分.在Scaffolding里面有(固定)网格布局(Grid System)和流式网格布局(Fluid Grid System).本文讨论第一种 ...
- asp.net上传控件使用
protected void Button1_Click(object sender, EventArgs e) { string str = ""; if (FileUpload ...
- 最新Cocos2d-x3.2开发环境搭建(windows环境下)
原文地址:http://cache.baiducontent.com/c?m=9d78d513d9921cfe05ac837f7d16c067690297634d9dc7150ed58449e3735 ...
- [转]Centos6.5使用yum安装mysql—配置MySQL允许远程登录
一.mysql安装 第1步.yum安装mysql[root@stonex ~]# yum -y install mysql-server安装结果:Installed: mysql-server ...
- 安卓开发06:布局-线性布局 LinearLayout
LinearLayout把视图组织成一行或一列.子视图能被安排成垂直的或水平的.线性布局是非常常用的一种布局方式. 请看一个布局例子: <LinearLayout xmlns:android=& ...