解决方案 »

  1.   


    public static void testArray() {

    /**
     * 用countString(String[] arr)能做到的, countString1(String... arr) 都能做到。
     * 可是反过来是不成立的。
     * 比如:我只需要传入一个Sting,而不是一个Stirng[]的数组,那么countString(String[] arr)就做不到。
     */
    String[] arr0 = {"hello","hello"};
    System.out.println(countString(arr0));

    System.out.println(countString1(arr0));
    System.out.println(countString1("hello"));
    System.out.println(countString1("hello","world","home"));
    }

    /**
     * 可以接受的参数:String[]数组,单个String,多个String的列表
     * @param arr
     * @return
     */
    private static int countString1(String... arr){
    return arr.length;
    }
    /**
     * 只能接受String[]数组作为参数
     * @param arr
     * @return
     */
    private static int countString(String[] arr){
    return arr.length;
    }
      

  2.   

    数组的功能是可变参数功能的子集,凡是用数组做形参的地方都可以用可变参数替换。例如main方法:
    public static main(String[] args) {
         //待执行的代码
    }
    可以写成
    public static main(String... args) {
         //待执行的代码
    }可变参数的功能比数组更为强大,除了能够接收数组类型的实参外 ,还能够接收个数不限的单个实参。
    写成“String... args”这样子,实际上是提醒编译器将接收到的若干单个实参整理成数组传给args,
    args归根结底接收到的还是数组。当然,你若直接给args传一个数组也没有错,这样反而省的编译器去整理了。总结一下:可变参数是数组参数功能上的扩展。
      

  3.   

    补充一下: 可变参数只能是参数列表的最后一个。例如:
    public void method(int a, String... args) { //正确}public void method(String... args, int a) { //错误
    }
      

  4.   


    感谢~原来单个String无法使用[]呀。
      

  5.   


    真是误人子弟的回答啊~误人子弟不至于吧,我觉得这种问题各有各的看法而已。我一直觉得java的可变长参数和泛型是鸡肋,我都可以用其他方式替代,那还有什么存在的价值。所以我一般都不用可变长参数和泛型。可变长参数用数组替代,泛型我一般都直接接受Object,省事多了。
      

  6.   


    真是误人子弟的回答啊~误人子弟不至于吧,我觉得这种问题各有各的看法而已。我一直觉得java的可变长参数和泛型是鸡肋,我都可以用其他方式替代,那还有什么存在的价值。所以我一般都不用可变长参数和泛型。可变长参数用数组替代,泛型我一般都直接接受Object,省事多了。你不觉得可变参数 要比 数组参数 灵活的多么
      

  7.   


    真是误人子弟的回答啊~误人子弟不至于吧,我觉得这种问题各有各的看法而已。我一直觉得java的可变长参数和泛型是鸡肋,我都可以用其他方式替代,那还有什么存在的价值。所以我一般都不用可变长参数和泛型。可变长参数用数组替代,泛型我一般都直接接受Object,省事多了。你不觉得可变参数 要比 数组参数 灵活的多么我觉得应该是数组更灵活吧,在运行的时候都能够更改参数个数,但是可变参数能做到吗?各人喜好而已,我的想法也不一定是对的。只是我个人的编程习惯而已。
      

  8.   


    真是误人子弟的回答啊~误人子弟不至于吧,我觉得这种问题各有各的看法而已。我一直觉得java的可变长参数和泛型是鸡肋,我都可以用其他方式替代,那还有什么存在的价值。所以我一般都不用可变长参数和泛型。可变长参数用数组替代,泛型我一般都直接接受Object,省事多了。你不觉得可变参数 要比 数组参数 灵活的多么我觉得应该是数组更灵活吧,在运行的时候都能够更改参数个数,但是可变参数能做到吗?各人喜好而已,我的想法也不一定是对的。只是我个人的编程习惯而已。我觉得你长得像 主持人 彭宇