gpt4 book ai didi

Java 可变长度参数与数组,简单的语法糖?

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:37 26 4
gpt4 key购买 nike

我正在本地社区大学学习数据结构和算法类(class),以获取乐趣。本类(class)的教科书是 Y. Daniel Liang 的Java 编程入门,第 10 版。这本书本身非常扎实。

在处理Java.util.Arrays时,Liang提到了Java的“可变长度”参数。他写道(第 265 页):

Java treats a variable-length parameter as an array. You can pass an array or a variable number of arguments to a variable-length parameter. When invoking a method with a variable number of arguments, Java creates an array and passes the arguments to it.

一个例子是:

public static void (int... toes) {
//... some code
}

但是,Liang并没有解释变长参数的由来或优点。如果像Liang所说的那样,将变长参数“转换”为数组,那么它们的优势是什么?是否存在由可变长度参数促进的软件设计模式或工程目标?

换句话说,上面的代码片段提供了以下代码片段没有提供的内容:

public static void (int[] toes) { // ...

最佳答案

您所说的“...”参数称为 varargs .

需要注意的一些差异:

  • 可变参数可以不传递任何参数(基本上被忽略)、null 或不确定数量的参数,而数组参数必须传递数组或 null
  • varargs 必须是方法的最后一个参数,而对于数组参数来说则无关紧要。这是因为 varargs 的特殊属性,这可能是您发布的两件事之间最显着的区别:

The three periods after the final parameter's type indicate that the final argument may be passed as an array or as a sequence of arguments

Source

例如,这个方法:

public void myMethod(String... args) {}

可以用以下任一方式调用:

String[] myStrings = {"a", "b", "c"};
myMethod(myStrings);
myMethod("a", "b", "c");

参见this有关何时应使用可变参数的良好解释。

关于Java 可变长度参数与数组,简单的语法糖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com