可变参数列表
来源:互联网 发布:特斯拉电磁塔升级数据 编辑:程序博客网 时间:2024/05/23 15:36
用Object数组作为接收参数的数组:
package Varargs;class A{}public class VarArgs {static void printArray(Object[] args){for(Object obj:args){System.out.print(obj+" ");}System.out.println();System.out.println("******************************************");}public static void main(String[] args) {printArray(new Object[]{47,3.14,11.11});printArray(new Object[]{new Integer(47),new Float(3.14),new Double(11.11)});printArray(new Object[]{"one","two","three"});printArray(new Object[]{new A(),new A(),new A()});}}
这种方式的缺点是必须声明一个new Object[]{},才能够传递给printArray()方法。
下面这种方法的话就可以I省略数组的声明了:
package Varargs;public class NewVarArgs {static void printArray(Object... args){for(Object obj:args){System.out.print(obj+" ");}System.out.println();System.out.println("******************************************");}public static void main(String[] args) {printArray(47,3.14,11.11);printArray(new Integer(47),new Float(3.14),new Double(11.11));printArray("one","two","three");printArray(new A(),new A(),new A());//这种形式也可以接收数组printArray((Object)new Integer[]{1,2,3,4});//还可以为空printArray();}}
在方法的接收类型中声明为:(Object...args),就可以直接接受所传递的参数。倒数第二行可以看出,也可以接收数组。
最后一行可以看出将0个参数传递给可变参数列表也是可行的,当具有可选的尾随参数时,这一特征就会很有用:
package Varargs;public class OptionalTrailingArguments {static void f(int required,String... args){for(String s : args){System.out.print(s+" ");}System.out.println();System.out.println("*******************************");}public static void main(String[] args) {f(0);f(1,"one");f(2,"two","three");}}
在可变参数列表中可以使用任何类型的参数,包括基本类型,比如:
package Varargs;public class VarargType {static void f(Character...args){System.out.println(args.getClass());System.out.println("length:"+args.length);}static void g(int...args){System.out.println(args.getClass());System.out.println("length:"+args.length);}public static void main(String[] args){f('a');//注意上面是单引号,不是双引号啊。单引号是Character,双引号是Stringf();g(1);g();//下面的这个数组和上面的接收的Int类型的方法是相同的格式,注意对比System.out.println("int[]:"+new int[0].getClass());//这样证明了可变参数列表不依赖于自动包装机制,而实际上上使用的是基本类型}}
需要说明的是,Integer和int类型的数据,可以和平相处,方法进行参数的接收的时候,没有影响,不需要我们进行转换:
package Varargs;public class AutoboxingVarargs {static void f(Integer...args){for(Integer i : args){System.out.print(i+" ");}System.out.println();}public static void main(String[] args) {f(new Integer(1),new Integer(2));f(3,4,5,6,7,8);f(9,new Integer(10),11);}}
——来自:Think in java
- Java可变参数列表
- 可变参数列表
- 关于可变参数列表
- 可变参数列表
- c++ 可变参数列表
- 可变参数列表
- cstdarg可变参数列表
- 可变参数列表
- java可变参数列表
- 可变参数列表
- Java 可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- /可变参数列表
- 可变参数列表
- 《十天学会web标准(div+css)》之第八天:下拉及多级弹出菜单
- 我看新浪网改版--CMS建站专家发哥的三言两语(转载)
- 文件读取及对信息排序
- CSS单词及属性
- 专题4-7数组参数和指针参数分析(国嵌C语言视频)
- 可变参数列表
- 10881 - Piotr's Ants 趣味模拟题
- 《学习OpenCV》练习题第四章第二题
- nutch 学习笔记
- 计算机科学中的树
- 获取navigationcontroller栈中的倒数第二个视图控制器
- Uva 151 - Power Crisis
- 开源资料:firework 脚本方面的资料
- 第九天 CSS表单设计