java方法的可变参数用法
2017-12-21 17:42
239 查看
java方法的可变参数用法:
在JavaSE5中加入了可变参数功能,用法示例为:
public void printArray(Object … args){}
参数形式变成了:类型+三个黑点+参数名
作用:
(1)可以再不知道参数个数的情况下传入对象进去。
(2)可以为应用于单个参数或多个参数。
举例说明:
运行结果截图为:
注意一点:main方法中倒数第二条语句是将两个Integer数组作为参数传入进去,args数组接收到的是两个对象,遍历时是遍历这两个对象(而不是每个对象里的东西),所以输出是Integer在包的位置和@符号加上Integer对象的地址位置。如果把mian方法中倒数第二条语句改为printArray((Object[])new Integer[] {1,2,3,4});的话那么,传入的就是一个对象,args数组就会是一个对象(传入的那个对象),就会遍历该对象里的每一个值。所以说可变参数适合多个参数和单个参数,但一定要注意两者的区别。
扩展用法:如果将上述main方法中的最后一行printArray()方法调用改为pringArray(1,2,new Integer(3),4);时,将单一的参数列表使用了混合类型,自动包装机制将有选择的将int参数提升为Integer。
有时会有这种情况:
有两个重载函数:函数一为:public void f(float i,Charactor … args){..}
函数二为:public void f(Charactor … args){…}
如果main函数里有两个函数调用上述两个f函数时:f(1,’a’);
f(‘a’,’b’);就会产生编译错误(ComplieTimeError)
解决办法是:在某个方法中增加一个非可变参数来解决该问题。
如上例的解决办法为:将public void f(Charactor … args){…}改为public void f(char c,Charactor … args){…} 即可。
在JavaSE5中加入了可变参数功能,用法示例为:
public void printArray(Object … args){}
参数形式变成了:类型+三个黑点+参数名
作用:
(1)可以再不知道参数个数的情况下传入对象进去。
(2)可以为应用于单个参数或多个参数。
举例说明:
public class NewVarArgs { static void printArray(Object ... args) { for(Object obj : args) { System.out.print(obj+" "); } System.out.println(); } public static void main(String[] args) { printArray(new Integer(47),new Float(3.14),new Double(11.11)); printArray(47,3.14,11.11); printArray("one","two","three"); printArray(new A(),new A(),new A()); printArray((Object[])new Integer[] {1,2,3,4},(Object[])new Integer[] {1,2,3,4}); printArray(); } }
运行结果截图为:
注意一点:main方法中倒数第二条语句是将两个Integer数组作为参数传入进去,args数组接收到的是两个对象,遍历时是遍历这两个对象(而不是每个对象里的东西),所以输出是Integer在包的位置和@符号加上Integer对象的地址位置。如果把mian方法中倒数第二条语句改为printArray((Object[])new Integer[] {1,2,3,4});的话那么,传入的就是一个对象,args数组就会是一个对象(传入的那个对象),就会遍历该对象里的每一个值。所以说可变参数适合多个参数和单个参数,但一定要注意两者的区别。
扩展用法:如果将上述main方法中的最后一行printArray()方法调用改为pringArray(1,2,new Integer(3),4);时,将单一的参数列表使用了混合类型,自动包装机制将有选择的将int参数提升为Integer。
有时会有这种情况:
有两个重载函数:函数一为:public void f(float i,Charactor … args){..}
函数二为:public void f(Charactor … args){…}
如果main函数里有两个函数调用上述两个f函数时:f(1,’a’);
f(‘a’,’b’);就会产生编译错误(ComplieTimeError)
解决办法是:在某个方法中增加一个非可变参数来解决该问题。
如上例的解决办法为:将public void f(Charactor … args){…}改为public void f(char c,Charactor … args){…} 即可。
相关文章推荐
- Java方法的可变参数类型 int... i 的用法
- Java方法的可变参数类型
- Java方法的可变参数类型
- Java方法的可变参数类型
- Java方法的可变参数类型
- java 5 新特性——可变参数方法
- java中方法的可变参数的研究
- Java可变参数方法重载时要注意的几个问题
- java学习笔记---Java可变参数方法重载时要注意的几个问题
- Java可变参数(...)方法重载时要注意的几个问题
- Java 可变参数基本用法
- Java方法的可变参数类型
- Java方法的可变参数类型
- Java基础第十七天学习日记_Collections和Arrays的常用方法、高级for循环、可变参数、静态导入
- Java可变参数方法重载时要注意的几个问题
- java学习笔记:声明方法时加入可变参数
- Java方法的可变参数类型
- Java方法的可变参数类型
- java 可变参数方法
- Java基础篇笔记(四) ---this的用法,解决类中的成员变量和方法中的参数重名