黑马程序员技术交流社区
标题:
可变参数的一点小问题
[打印本页]
作者:
刘建宇
时间:
2012-2-10 22:54
标题:
可变参数的一点小问题
package cn.itcast.fuxi;
public class Changeableargs {
/**
* @param args
*/
public static void main(String[] args) {
//参数类型是String,为什么传入String数组也能被调用,不会报参数不匹配异常呢?
test2(new String[]{"23","23","we"});
}
public static void test2(String... strArray) {
if(strArray!=null && strArray.length>0){
for(String str : strArray){
System.out.print(str + "\t");
}
}
}
}
作者:
Joyuang
时间:
2012-2-10 22:57
JDK中String类有大量的构造方法,里面有这个:
String(char[] value)
分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
所以可以传String数组。
作者:
杜明辉
时间:
2012-2-10 23:57
String... :三个点代表不确定类型,它可以是String[] 数组形式。;
作者:
林铁柱
时间:
2012-2-11 09:44
张老师在课程中讲过:当你在调用可变参数的方法时,编译器为该可变参数隐含创建了一个数组,在方法体中不就是以数组的形式访问可变参数的吗?
所以String... strArray表示你可以既可以传入一个String也可以传入一个String[],可以传入多个参数,也可以不传参数。这是可变参数的特性。其实编译器是把String... strArray当做String str,String str ... String[] strArray来处理的,只不过参数个数不确定。
如果将public static void test2(String... strArray){...}改为public static void test2(String[] strArray){...}就只接受String[],而不接受String了,这就是参数列表比数组参数更灵活的地方。
作者:
何洪森
时间:
2012-2-11 13:58
其实可变参数的接收就是一个数组,根据你传的参数都被放到那个数组里面。根据
你传入参数的不同,调用相应的方法。此时你传入的是一个String数组,它就会调用
接收数组的那个方法。
作者:
吴亨
时间:
2012-2-13 21:19
这是高新技术里面关于可变参数的问题,“..."表示参数个数不确定,而它的内部原理其实就是将传进来的参数封装成数组。
作者:
李杨
时间:
2012-2-13 21:28
可变参数是在JDK1.5引入的一个特性,可以接受数组也支持传递多个参数。
而参数是数组是JDK1.4的特性,你想啊,出了1.5新特性后就是可变参数了,当然要支持旧版本的数组参数了。要做到旧版本的兼容性啊。
注意,可变参数在使用的时候有个要求,比如你的方法是
public void printResult(String s, int... n)
可变参数要放到参数列表的最后。顺序要正确。
作者:
黄锦成
时间:
2012-2-13 22:20
其实test2方法里面的可变参数,实际上就是一个数组
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2