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 ...
随机推荐
- c++子类和父类成员函数重名
子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数. 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名 ...
- centos6.5 mysql安装+远程访问+备份恢复+基本操作+卸载
参考博文: Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置 MySQL修改root密码的多种方法 MySQL的备份与还原 解决mysql导入还原时乱码的问题 ...
- maven仓库--私服(Nexus的配置使用)
maven--私服的搭建(Nexus的使用)和注意的问题 私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视.Nexus是常用的私用Maven服务器,一 ...
- Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
<pre name="code" class="python">[Thu May 5 11:02:27 2016] [error] Corrupte ...
- 以正确的方式开源 Python 项目
以正确的方式开源 Python 项目 大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清 晰和无痛.我不是 ...
- 基于visual Studio2013解决算法导论之054图的邻接矩阵表示
题目 图的邻接矩阵表示 解决代码及点评 // 图的邻接矩阵表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <l ...
- MYSQ提高L查询效率的策略总结
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值推断,否则将导致引擎放弃使用索 ...
- 深度优先搜索(DFS)递归形式改为非递归形式
DFS将递归改为非递归这个方法的需求来自于一道三维积木组合的题目,还在苦苦调试中,暂且不提. 普通的认识对于递归向非递归的转化无非是使用栈,但是结合到深度搜索如何将栈很好利用,如何很好保存现场,都不是 ...
- Windebug双机调试环境搭建
Windebug双机调试环境搭建 开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...
- BZOJ 2789: [Poi2012]Letters( BIT )
直接求逆序对就行了...时间复杂度O(nlogn) ------------------------------------------------------------------------- ...