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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高双武 黑马帝   /  2011-11-7 20:46  /  1472 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package students;
public class VariableParaments {       
        public static int addSum(int x,int  ... args){
                int sum=0;
                for(int i=0;i<args.length;i++){
                        sum=sum+args[i];
                }
                return sum;
        }
        public static void main(String [] args){
                System.out.println(addSum(1,2,3,4,5));
        }

其中args.length是指数组长度,为什么在调试时显示长度值是4,不是有五个数吗?
  

4 个回复

倒序浏览
因为你在addSum 方法中传入了两个参数,其中一个为可变参数,
回复 使用道具 举报
本帖最后由 刘福双 于 2011-11-7 21:22 编辑

数组的下标是从0 开始的
0、1、2、3、4
五个数
例子证明下:
public class as {
       
        public static void main(String[] args){
                System.out.println(addSum(1,2,3,4,5));
        }      
            public static  int addSum(int  ... args){
                    int sum=0;
                    for(int i=0;i<args.length;i++){
                            sum=sum+args;
                    }
                    return sum;
            }

}


如果定义int x,int  ... args就会忽略一个数
回复 使用道具 举报
谢谢你们的回答,刚才测试了一下,好像是这样,x并不属于args[]数组里面的数,数组里只存了2,3,4,5那个1直接存在变量x里了
回复 使用道具 举报
出入的是5个参数,但是第一关参数传给了第一关参数x,后面的4个才真正传给了args,所以是4个,我感觉这就是我们定义的可变参数都是放在最后面,不然就会出现错误,不然我们都不知道怎么传给参数值了,系统也不会识别的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马