我正在当地社区大学学习数据结构和算法课程,以获取乐趣。该课程的教材是Y. Daniel Liang的Java 编程简介,第 10 版。这本书本身非常扎实。
在处理Java.util.Arrays
,Liang提到了Java的“可变长度”参数。他写道(第 265 页):
Java 将可变长度参数视为数组。您可以通过
数组或可变长度的可变数量参数
范围。当调用具有可变数量参数的方法时,
Java 创建一个数组并将参数传递给它。
一个例子是:
public static void (int... toes) {
//... some code
}
然而,梁并没有解释变长参数的由来或优点。如果像Liang所说的那样,将变长参数“转换”为数组,那么它们的优势是什么?是否存在由可变长度参数促进的软件设计模式或工程目标?
换句话说,上面的代码片段提供了以下代码片段没有提供的内容:
public static void (int[] toes) { // ...
您正在谈论的“...”参数被称为varargs.
需要注意的一些差异:
- 可变参数可以不传递任何参数(基本上被忽略)、null 或不确定数量的参数,而数组参数必须传递数组或 null
- varargs must是方法的最后一个参数,而对于数组参数来说并不重要。这是因为 varargs 的特殊属性,这可能是您发布的两件事之间最显着的区别:
最终参数类型后面的三个句点表明
最终参数可以作为数组或参数序列传递
Source
例如,这个方法:
public void myMethod(String... args) {}
可以用以下任一方式调用:
String[] myStrings = {"a", "b", "c"};
myMethod(myStrings);
myMethod("a", "b", "c");
See this关于何时应使用可变参数的良好解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)