2012-03-15 84 views
6

可能重複:
varargs and the '…' argument
Java, 3 dots in parameters什麼是java中的「String ...」?

我看到在我的Android的Java文件這個定義。 它看起來就像String []。他們不一樣嗎? 謝謝。

+10

http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html – assylias 2012-03-15 10:59:41

+0

和http://計算器。 com/questions/1656901/varargs-and-the-argument – assylias 2012-03-15 11:00:28

+0

...或者在過去5年左右編寫的任何好的Java教科書。 – 2012-03-15 11:01:20

回答

5

它的語法編寫數組的項目作爲參數

例如:

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

然後就可以調用此方法first("4","2","5","67")

的通過JavaCompiler將創建的數組參數本身。

+0

第一(「4」,「2」,「5」,「67」),並非首先(4,2,5,67) – 2012-03-15 11:07:51

+0

爲真。出於一個原因,我正在考慮整數。 – 2012-03-15 11:10:33

13

varags。如果一個方法簽名是method(Param param, String... x)它將需要一個Param類型的對象和任意個字符串對象。

有幾個,如果它很酷的事情:

  1. 沒什麼特別的。它只是加糖陣列。所以,method(MyObject... o)method(MyObject[] o)相同。

  2. Vararg 必須是參數列表中的最後一個參數。

  3. 有這個有趣的事情,讓我咬一次。可以調用method(MyObject... o)作爲method(),而不會出現任何編譯錯誤。 Java將在內部將無參數調用轉換爲method(new MyObject[0])。所以,請注意這一點。

1

這是一個變量,可變數量的參數。在方法主體中,您將其視爲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的

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");