public class TestVarargs{
public static void m(String[] ss){
for(int i=0; i<ss.length; i++){
System.out.println(ss[i]);
}
}
public static void m1(String s, String... ss){
for(int i=0; i<ss.length; i++){
System.out.println(ss[i]);
}
}
    public static void main(String[]args){
String[] ss = {"aaa", "bbb", "ccc"};
m(ss);
m1("");
m1("aaa");
m1("aaa", "bbb");
    }
}为什么输出的结果是aaa bbb ccc bbb呢,怎么不是一个数组的输出呢?

解决方案 »

  1.   

    在调用m(ss)的时候你将ss字符串数组传给了m(String[])方法,将迭代打印出 aaa bbb ccc
    在调用m1("")的时候你将""字符串给了m1的第一个参数,第二个不定长参数没接受到参数,长度为0,所以在下面的迭代中没有打印出任何东西。
    调用m1("aaa")的道理和上面这个一样。
    调用m1("aaa","bbb")时候aaa传给了m1的第一个参数,bbb传给了第二个不定长参数,此时这个不定长参数只有一个元素,所以下面打印时只会出现bbb。
    这样整个程序下来,就打印出了 aaa bbb ccc bbb