`
usagoole
  • 浏览: 8122 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

可变参数

阅读更多

==================这只是可变参数的一点点总结,后续会继续补充==============================

 

1、可变参数适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.在方法内以数组的形式访问可变参数

2可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数,因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。

 

3、位于变量类型和变量名之间(…),前后有无空格都可以

/**

     * 可变参数列表只能出现在参数之后

     * int.. args

     * int ...args

     * int ... args

     * int...args

     * 以上几种写法都没有问题

     * */

    publicstaticint add(int x,int...args)

    {

       int sum = x;

       for(int i = 0 ;i<args.length;i++)

       {

           sum = sum+args[i];

       }

       return sum;

    }

4调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。编译器会在背地里把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。

 

5、尽管在背地里,编译器会把能匹配不确定个实参的形参(当然也包括0个参数),转化为数组形参;而且也可以用数组包了实参,再传递给实参个数可变的方法;但是,这并不表示“能匹配不确定个实参的形参”和“数组形参”完全没有差异

 

6、与数组形参的区别

         1、可变形参既能传递多个参数,也可以传递一个数组。而数组形参只能传递一个数组

7public void test(String book){}

   public void test(String … books){}

如果只传递一个参数,则会调用test(String book),解决办法传入一个字符串数组test(new String[]{“a”})

所有不推荐重载形参长度可变的方法,降低程序可读性

 

 ==========================待续................................=====================================

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics