可变参数列表

来源:互联网 发布:sql语句exit 编辑:程序博客网 时间:2024/05/16 04:33

    今晚是个激动人心的日子,我立志从今晚起,每天学习一部分感兴趣的内容,现在目标锁定在《Java编程思想》。

    立志啦哈,小学时,于老师就对我们说过,要立长志,不要常立志,这点我做的就不好,总是不太坚持!惭愧,但是我感觉自从干了IT之后,自己任性的那股子邪劲儿好像转移过来了,大有一种--老子不把他研究透就不回家--的干劲儿,呵,看来我的韧性可能会在这儿开始!

    首先,恶补一下基本概念,可恶,这种东西都能忘,是该整理一下啦!!!

    |-“重载指的是在一个类的内部有两个或多个名字相同但参数不同的方法。”

    |-“覆写指的是不同的类中(父类方法,子类覆写)有两个或多个返回类型,方法名,参数都相同,但是方法体不同的方法。”

    进入今天的正题:可变参数列表

    记得上周参见公司培训的时候,架构老师曾经说过,可变参数列表,一般多是一个固定的参数,然后是一个可变的参数列表,这样使代码功能性更强,更加适应变化。

    J2SE1.5之前都是通过(Object[] args)来实现可变参数,在1.5之后则改成了(Object...args)这样可以使得调用处再也不用显示的编写数组的语法了,当你指定参数是,编译器会自动为你填充数组,如下:

    |-以前的调用处printArray(new Object[]{"one","two","three"}) ;

    |-而现在printArray("one","two","three") ;

    而当你已经将他转换成数组了之后,编译器就不会再将其转换成数组,而是把他们当做可变参数列表来接受。

    可变数组可以是任何类型,包括基本数据类型。基本数据类型也可以和其包装类混用。

    然而,当你调用可变参数列表时,请注意,如果你不传任何值,那么请确保,该方法没有被重载,如果被重载,那么编译器则不知道调用哪个啦~

    另外,可变参数列表应该是在方法的重载时来使用,而且最好在参数列表中,在可变参数列表旁边添加一个非可变参数列表。如下:

    |-public class OverLoadingVarargs3{
       static void f(float i,Character...args){
        System.out.println("first") ;
       }
       static void f(char c,Character...args){
        System.out.println("second") ;
       }
       public static void main(String[] args){
        f(1,'a') ;
        f('b','a') ;
       }
      }