Java的不定参数

来源:互联网 发布:广州汇丰银行软件开发 编辑:程序博客网 时间:2024/06/06 16:30

问题:在传参数的时候,如果参数的个数不确定怎么办?参数可以是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}