Java的不定参数
问题:在传参数的时候,如果参数的个数不确定怎么办?参数可以是0个,也可以是1个,可以是任意多个,怎么办呢?
这个时候就需要用到不定参数了。
1)首先,来观察一下不定参数的基本格式:
String…strings
Object…objects
int…is
float…fs
2)不定参数只能作为方法的形参,不能用作变量
public static void main(String[] args) {
String... s=null;//这样做是错误的,编译无法通过
}
3)不定参数的真实类型是一维数组。数组的数据类型:定义该不定参数时指定的类型;数组的长度:传过去的参数的个数。
String…strings的真实类型是:String[]
Object…objects的真实类型是:Object[]
int…is的真实类型是:int[]
float…fs的真实类型是:float[]
public class Demo5 {
public static void main(String[] args) {
test(1);//传一个参数过去
}
public static void test(Object...objects){
System.out.println(objects);
System.out.println(objects.getClass().getTypeName());
if(objects!=null){
System.out.println("长度:"+objects.length);
}
}
}
运行结果:
[Ljava.lang.Object;@15db9742
java.lang.Object[]
长度:1
4)为不定参数传值:可以传null,可以传0个参数,可以传1个参数,可以传任意个参数。
public class Demo5 {
public static void main(String[] args) {
test(null);//传null过去
test();//传0个参数
test("a");//传1个参数
test("a","b","c");//传3个参数
}
public static void test(String...strings){
}
}
5)不定参数的2个规定:第一,方法的参数列表中最多只有一个不定长度的参数;第二,就是不定长度的数组的位置必须是最后一个参数。不然不能通过编译。这2项规定非常好理解。
public static void test2(String...strings,int number){
//无法通过编译
//The variable argument type String of the method test2 must be the last parameter
}
还没有评论,来说两句吧...