Java中的“String…”是什么?

8

10
http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html - assylias
和https://dev59.com/9HI-5IYBdhLWcg3w0cGG - assylias
... 或者任何一本在过去的5年里出版的好的Java教材。 - Stephen C
5个回答

17

varags。如果一个方法的声明是method(Param param, String... x),那么它将接受一个Param类型的对象和任意数量的字符串对象。

这里有一些很酷的东西:

  1. 它没有什么特别之处,只不过是数组的语法糖。因此,method(MyObject... o)method(MyObject[] o)相同。

  2. 可变参数必须是参数列表中的最后一个参数。

  3. 有一件有趣的事情曾经困扰了我。可以像调用method()一样调用method(MyObject... o),而不会出现任何编译错误。Java会在内部将无参调用转换为method(new MyObject[0])。所以要注意这一点。


7

这是写数组项作为参数的语法。

例如:

 public String first (String... values) {
     return values[0];
 }

然后,您可以使用first("4","2","5","67")调用此方法。

Java编译器会自动创建参数数组。


first("4","2","5","67") ,not first(4,2,5,67) - Balaswamy Vaddeman
由于某种原因,我正在思考整数。 - Willem Van Onsem

2

它是一个可变数量参数(vararg),在方法体内,你可以将其视为String[],但是当你调用该方法时,你可以选择提供一个String[]或者只枚举你的值。

void foo(String... blah) { }

void bar() {
   String[] a = { "hello", "world" };
   foo(a);  // call with String[]
   foo("hello", "world"); // or simply enumerate items
}

从Java 5开始引入的。


1

0

String 是字符串类型。 String[] 是字符串数组。

String ... 是一种语法糖,称为省略号,引入自Java 1.5并来自C。它可以在方法定义中使用,实际上与数组相同,只有一个区别。 如果方法被定义为:

public void foo(String[] arg){}

你必须传递一个数组:

foo(new String[] {"a", "b"});

如果方法被定义为:

public void foo(String arg){}

你可以这样调用它:

foo(new String[] {"a", "b"});

或者

foo("a", "b");


你的第二个例子缺少省略号。 - mcalex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接