【发布时间】:2019-01-07 01:49:06
【问题描述】:
有两种函数声明:
void f(String ... s) {
System.out.println(s.length);
}
void g(String [] s){
System.out.println(s.length);
}
两者都可以,我猜“f()”只是g()的一种语法糖?
使用 f() 时,java 编译器仍然会创建一个 s 的内部数组,对还是错? ---- 我检查了 Intellij 中的类文件,似乎 f() 的反汇编代码仍然是 String...不是 String[]
您能帮忙澄清一下吗?非常感谢。
【问题讨论】:
-
一个区别是
f("foo", "bar");编译但g("foo", "bar");不编译
标签: java arrays parameters variadic-functions