A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 霍明波 中级黑马   /  2012-9-18 15:02  /  1311 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 霍明波 于 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没有算进数组里,
但是对于可变参数那里有用到,毕老师好像没提过,
是不是版本升级后,原来版本的数组型的参数都变成这种可变参数了呢。在什么地方可以用到呢。

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

3 个回复

正序浏览
当参数有多个或者个数不确定的时候,参数需要定义成数组
但是定义数组会很麻烦,JDK1.5以后提供了新方法解决这个问题就是用...可变参数

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

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 chjxs 于 2012-9-18 22:17 编辑


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

程序可以考虑用递归。。
回复 使用道具 举报
以前需要可变参数的地方都是用object数组实现,现在的1.5的特性中, 也都兼容以前的。也就是在使用可变参数的地方,如果使用object数组作为参数,会用1.4的特性方法执行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马