public static void main(String[] args) {
test("a", "b", "c");
}
public static void test(String... strs) {
System.out.println(strs.getClass().getSimpleName());
System.out.println(strs);
}
反编译.class源码可看到
public static void main(String[] args) {
test(new String[] { "a", "b", "c" });
}
public static void test(String... strs) {
System.out.println(strs.getClass().getSimpleName());
System.out.println(strs);
}
可以看到 , 在调用test方法时 , 编译器自动new了一个数组传进去 . 即是说 , 不定长参数是当作一个数组对象来传递的 .
我们运行代码查看执行结果 :
所以 , 不定长参数实际上就是数组 . 只不过我们书写时方便 , 编译器自动帮我们优化了~