Java 什么';“s”的正确用法是什么;“字符串…”;
所以我一直在试图弄清楚Java中Java 什么';“s”的正确用法是什么;“字符串…”;,java,arrays,string,Java,Arrays,String,所以我一直在试图弄清楚Java中String…的意义。据我所知,它和String[]差不多,但我在这里或谷歌上找不到任何关于它的信息 有人能告诉我它是什么以及这种东西的正确用法吗?(假设我有一个参数为myMethod(String…args){…} 谢谢!这意味着myMethod接受零个或多个String参数。例如,请参见。在中,这称为变量arity参数: 方法或构造函数的最后一个形式参数是特殊的:它可能是一个可变的arity参数,由类型后面的省略号表示 如果最后一个形式参数是可变算术参数,则该
String…
的意义。据我所知,它和String[]差不多,但我在这里或谷歌上找不到任何关于它的信息
有人能告诉我它是什么以及这种东西的正确用法吗?(假设我有一个参数为myMethod(String…args){…}
谢谢!这意味着
myMethod
接受零个或多个String
参数。例如,请参见。在中,这称为变量arity参数:
方法或构造函数的最后一个形式参数是特殊的:它可能是一个可变的arity参数,由类型后面的省略号表示
如果最后一个形式参数是可变算术参数,则该方法是可变算术方法。否则,它是固定算术方法
JLS还介绍了当存在可变的arity参数时如何匹配方法签名。就类型而言,此语法确实与
字符串[]
相同。但是,它允许调用方通过指定可变数量的字符串
参数隐式构造数组:
myMethod("a", "b", "c");
myMethod(); // Empty array is also allowed
myMethod("a", "b");
这种语法的一个限制是,类似这样的参数可能只出现在方法参数列表的末尾。
..
表示该方法支持变量args,即变量(数量)参数
因此,您可以将您的myMethod()
调用为
myMethod(); // or
myMethod(str1); // or
myMethod(str1, str2); // and so on
使用相同的方法签名myMethod(String…str)
。当声明具有多个参数的var-arg方法时,var-arg参数必须在所有其他正常方法参数之后成功
在方法内部,所有传递的参数都可以作为一个数组访问,该数组的引用名称与参数的引用名称相同。因此,您可以在此处实际使用str.length
该功能非常灵活。您甚至可以将
String[]
传递给它。但事实并非如此。采用数组的方法不会接受单个字符串。查找“可变java”。这是否意味着它可以转换为String[]对象?@IAreKyleW00t。它被转换为String[]
@IAreKyleW00t绝对:这是一个编译时功能,在运行时该类与myMethod(String[])
相同,调用与myMethod(新字符串[]{“a”、“b”、“c”)相同。
也可以使用显式数组调用它:myMethod(新字符串[]{“a”、“b”、“c”})
编译器可以很好地匹配它。当另一个重载方法缺少最后一个形式参数时,使用显式空数组有时是让编译器调用方法的varargs版本的唯一方法,或者是解决其他不明确的方法重载(最后一个varargs参数的类型不同)。