黑马程序员技术交流社区

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

作者: 刘泰    时间: 2012-3-30 22:29
标题: 可变参数
可变参数是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}));
能不能抢到呢?嘿嘿
作者: 刘_浩    时间: 2012-3-31 01:08
有问题吧, public static int sum(int x,int ...number)这里是方法,number只是一个int型的参数,number.length 这里的number是一个数组,前后两个number的类型对不上。是吗?
作者: 姚伟涛    时间: 2012-3-31 09:09

你打印的number类型和你的sum(int x,int...number)类型不相同,报错不能打印
System.out.println(sum(2,5,5,6));
结果:18

作者: 袁野    时间: 2012-3-31 10:22
。。。可变参数。你这里还可以使用增强for循环
由于我的本子按键不好就不做演示了
作者: yangshang1    时间: 2012-3-31 17:50
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;
         }

}
是这意思
作者: 如梦初醒    时间: 2012-3-31 21:22
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));的调用等价。
作者: 刘泰    时间: 2012-4-4 19:19
liuhao411 发表于 2012-3-31 01:08
有问题吧, public static int sum(int x,int ...number)这里是方法,number只是一个int型的参数,number. ...

可以对应的上的,可变参数在方法体内可以当做一个数组来用,求它的长度,当然可以用求数组的长度的方法来求了




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