黑马程序员技术交流社区

标题: 可变参数的疑问? [打印本页]

作者: 悟佛修道    时间: 2013-5-27 21:35
标题: 可变参数的疑问?
本帖最后由 悟佛修道 于 2013-5-27 23:02 编辑
  1. show(2,3,4,5,6,"haha");
  2. //show(2,3,4,5,6,4,2,35,9,"heh");
  3. //show();

  4. }
  5. public static void show(int... arr,String str)为什么这样写有错?



  6. show("haha",2,3,4,5,6);
  7. //show(2,3,4,5,6,4,2,35,9,"heh");
  8. //show();

  9. }
  10. public static void show(String str,int... arr)这样写就正确
复制代码
这个例子没弄明白,求分别解释下两种写法 是怎么传入参数里,为什么string str写后面对应传入的haha(也是在参数后面 )就会出错呢?为什么全部搬到前面去对应就不会出错呢?求解,谢谢!!
作者: lpflpy    时间: 2013-5-27 21:46
可变参数只能出现在参数列表的最后,这个是格式,记住即可。
作者: clp    时间: 2013-5-27 21:59
格式,规则就是这样的,要在java中玩,就必须遵从它的游戏规则

捕获.PNG (23.7 KB, 下载次数: 0)

捕获.PNG

作者: 陈潜    时间: 2013-5-27 22:14
可变参数:这个是java1.5的新特性
适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。使用可变参数时候,因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。使用时候需要注意的几点:只能是在参数列表的最后;使用...来定义参数。
class Demo{
        public void printString(StringBuffer sb ,int ... args){                //可变参数
                for(int arg : args){                //把传入的int[]加到字符串中
                        sb.append(arg);               
                }
                System.out.println(sb.toString());
        }

        public static void main(String[] args) {
                Demo d = new Demo();
                StringBuffer sb = new StringBuffer();
                d.printString(sb,1,1,1);
        }
}

作者: 风爽    时间: 2013-5-27 22:45
Java中的规则记住即可,可变参数只能出现在参数列表的最后
作者: 悟佛修道    时间: 2013-5-27 23:01
陈潜 发表于 2013-5-27 22:14
可变参数:这个是java1.5的新特性
适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。使 ...

似乎明白这个解释了,多谢,也谢谢各位。




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