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

© 刘泰 中级黑马   /  2012-3-30 22:29  /  1646 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

可变参数是JDK1.5以后的新特性,可变参数
例如:public class Number
{

        public static void main(String[] args)
        {
        System.out.println(sum(2,5,5,6));
        }
  public static int sum(int x,int ...number){//int ... number 定义一个可变参数
                int sum = x;
                for(int i = 0 ;i < number.length ; i++){//创建可变参数的时候,编译器会
                                               //隐含的创建一个数组,所以对可变参数的操作,和对数组的操作相同
                        sum += number[i];
                }
                return sum;
        }

}
也可以这样用 System.out.println(sum(2,int【】{1,2,3,4,5}));
能不能抢到呢?嘿嘿

6 个回复

倒序浏览
有问题吧, public static int sum(int x,int ...number)这里是方法,number只是一个int型的参数,number.length 这里的number是一个数组,前后两个number的类型对不上。是吗?
回复 使用道具 举报

你打印的number类型和你的sum(int x,int...number)类型不相同,报错不能打印
System.out.println(sum(2,5,5,6));
结果:18
回复 使用道具 举报
。。。可变参数。你这里还可以使用增强for循环
由于我的本子按键不好就不做演示了
回复 使用道具 举报
public class Number
{

        public static void main(String[] args)
         {
         System.out.println(sum(2,5,5,6));
         }
   public static int sum(int x,int ...number){//int ... number 定义一个可变参数
                 int sum = x;
                 for(int i = 0 ;i < number.length ; i++){//创建可变参数的时候,编译器会
                                                //隐含的创建一个数组,所以对可变参数的操作,和对数组的操作相同
                         sum += number[i];
                 }
                 return sum;
         }

}
是这意思
回复 使用道具 举报
ublic class Number
{

        public static void main(String[] args)
        {
        System.out.println(sum(2,5,5,6));
        }
  public static int sum(int x,int ...number){//int ... number 定义一个可变参数
                int sum = x;
                for(int i = 0 ;i < number.length ; i++){//创建可变参数的时候,编译器会
                                               //隐含的创建一个数组,所以对可变参数的操作,和对数组的操作相同
                        sum += number;
                }
                return sum;
        }

}
也可以这样用 System.out.println(sum(2,int【】{1,2,3,4,5}));
能不能抢到呢?嘿嘿
我的回答[
我认为这是可以的 public static void main(String[] args)都可以写成 public static void main(String... args) ,
System.out.println(sum(2,int[]{1,2,3,4,5}));在向 public static int sum(int x,int ...number)传入参数的时候写成 System.out.println(sum(2,(Object)int[]{1,2,3,4,5}));
(Object)int[]{1,2,3,4,5}用来说明传入的是一个整体的数组对象,传入 public static int sum(int x,int ...number)后, public static int sum(int x,int ...number)对(Object)int[]{1,2,3,4,5}进行拆包,可与   System.out.println(sum(2,5,5,6));的调用等价。
回复 使用道具 举报
liuhao411 发表于 2012-3-31 01:08
有问题吧, public static int sum(int x,int ...number)这里是方法,number只是一个int型的参数,number. ...

可以对应的上的,可变参数在方法体内可以当做一个数组来用,求它的长度,当然可以用求数组的长度的方法来求了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马