java变长参数方法

许多语言都支持变长参数,java也不例外。

java的变长参数比较另类,是用 ...   来表示的。

 

  void ShowArgs(String...args)

  args可以接受多个数量(包括0个)的String类型的参数。

 

 

 

注意:

1、变长参数最多只能有一个,而且必须在参数表的最后

2、变长参数在函数内部是以数组表示的。


3、如果调用时,参数既可以匹配固定参数方法,又匹配变长参数方法,则使用固定参数方法。

public class Drive 
{

    
    public static double Average(int...args)
    {
        
        int sum  =0;
        
        for(int i :args)
           sum+=i;

        return (sum*1.0)/args.length;
        
    }
    
    public static double Average(int a,int b)
    {
        System.out.println("我被调用了!");
        return (a+b)/2.0;
        
    }
    
    public static void main(String[] args) {
        

        double ave = Average(1,2);
        
        System.out.println(ave);
        
    }

}

 

4、不要让编译器摸不着头脑

public class Drive 
{

    
    
    public static double Average(int a,int...args)
    {
        
        return 0.0;
    }
    
    public static double Average(int ...args)
    {
         
        return 0.0;
    }
    
    public static void main(String[] args) {
        

        Average(1,2);      //编译器发牢骚了:The method Average(int, int[]) is ambiguous for the type Drive
                           //含糊不清,我该调用哪一个?
        
        
    }

}

 

 

5、实质

    如有变长参数方法   void Show(String...args)

    调用              Show("java","php","python");

    经过编译器编译后,jvm遇到的是这样的:

                      Show(new String[]{"java","php","python"})

   所以,变长参数是一种编译现象,而jvm对此一无所知。

 

你可能感兴趣的:(java变长参数方法)