黑马程序员技术交流社区

标题: 可变参数 [打印本页]

作者: 霍明波    时间: 2012-9-18 15:02
标题: 可变参数
本帖最后由 霍明波 于 2012-9-18 15:04 编辑

package cn.itcast.day1;

public class StaticImport {
        public static void main(String[] args){
                add(1,2);
        }        
                        
        public static int add(int x,int...args){                        
                int sum = x;               
                for (int i=0;i<args.length;i++) {               
                        sum +=args;                                
                }
                return sum;               
        }

//        public static int add(int ...args){
//                int sum = 0;
//                for(int y=0;y<args.length;y++){
//                        sum += args[y];
//                }
//                return sum;
//        }
//        
}
老师讲的上面那种方法一直不明白,总是感觉多加了一遍int x;后来自己写了下面的试了一下,发现上面的方法int x没有算进数组里,
但是对于可变参数那里有用到,毕老师好像没提过,
是不是版本升级后,原来版本的数组型的参数都变成这种可变参数了呢。在什么地方可以用到呢。

作者: 张 涛    时间: 2012-9-18 15:10
以前需要可变参数的地方都是用object数组实现,现在的1.5的特性中, 也都兼容以前的。也就是在使用可变参数的地方,如果使用object数组作为参数,会用1.4的特性方法执行。
作者: chjxs    时间: 2012-9-18 22:08
本帖最后由 chjxs 于 2012-9-18 22:17 编辑


这里的
         sum=x;
sum就是临时的变量。

程序可以考虑用递归。。
作者: 冯心程    时间: 2012-9-19 02:32
当参数有多个或者个数不确定的时候,参数需要定义成数组
但是定义数组会很麻烦,JDK1.5以后提供了新方法解决这个问题就是用...可变参数

其实可变参数还是数组,它是直接定义数组的简写形式,因为可变参数不用直接定义数组对象,
只要将要传递的元素作为参数传递就行,隐式的将你传递的参数封装成了数组 封装的动作不需要你做 JVM已经在内部帮你做好了。

可变参数需要定义在参数列表的最后面。。
你说那个public static int add(int x,int...args)相当于两个参数 一个是int x, 一个是数组, int x 不在可变参数内。他俩没啥直接关系




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2