什么';java vararg数组参数和普通数组参数之间的区别是什么?
有两种函数声明:什么';java vararg数组参数和普通数组参数之间的区别是什么?,java,arrays,parameters,variadic-functions,Java,Arrays,Parameters,Variadic Functions,有两种函数声明: 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()的反汇编代码仍然是字符串。。。非字符串[] 你能帮我澄清一下吗?非常感谢。问:java
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()的反汇编代码仍然是字符串。。。非字符串[]
你能帮我澄清一下吗?非常感谢。问:java vararg数组参数和普通数组参数有什么区别? 看 final参数类型后的三个句点表示final参数可以作为数组或参数序列传递。Varargs只能在最终参数位置使用 Q:两者都可以,我猜“f()”只是g()的一种语法形式? 对 在一个数组中必须传递多个参数,这仍然是事实, 但是varargs特性会自动执行并隐藏该过程 Q:当使用f()时,java编译器仍然会创建一个内部数组s,对还是错我检查了Intellij中的类文件,似乎f()的反汇编代码仍然是字符串。。。非字符串[] 它作为数组处理,请参见 此外,我完全支持参考文件的最后陈述: 那么什么时候应该使用varargs呢?作为客户,你应该利用 无论API何时提供它们,都会提供它们。核心API的重要用途 包括反射、消息格式和新的printf功能。 作为API设计器,只有在 好处确实令人信服。一般来说,你不应该 重载varargs方法,否则程序员很难 找出调用哪个重载
一个区别是
f(“foo”,“bar”)代码>编译,但g(“foo”,“bar”)代码>不显示