Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';“s”的正确用法是什么;“字符串…”;_Java_Arrays_String - Fatal编程技术网

Java 什么';“s”的正确用法是什么;“字符串…”;

Java 什么';“s”的正确用法是什么;“字符串…”;,java,arrays,string,Java,Arrays,String,所以我一直在试图弄清楚Java中String…的意义。据我所知,它和String[]差不多,但我在这里或谷歌上找不到任何关于它的信息 有人能告诉我它是什么以及这种东西的正确用法吗?(假设我有一个参数为myMethod(String…args){…} 谢谢!这意味着myMethod接受零个或多个String参数。例如,请参见。在中,这称为变量arity参数: 方法或构造函数的最后一个形式参数是特殊的:它可能是一个可变的arity参数,由类型后面的省略号表示 如果最后一个形式参数是可变算术参数,则该

所以我一直在试图弄清楚Java中
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参数的类型不同)。