簡體   English   中英

Java - 聲明數組

[英]Java - Declaring Arrays

當我創建一個新數組時,我會做這樣的事情。

int[] anArray = {1, 2, 3};

但我看到有些人做了類似的事情。

int[] anArray = new int[] {1, 2, 3};

我明白它的作用,但我不明白它的目的。 這樣做有什么好處呢?

謝謝

兩者都有效的行為沒有區別。 它們在Java語言規范的第10.6節和第15.10節中介紹。

但是,第一種語法在聲明變量時有效。 例如:

 public void foo(String[] args) {}

 ...

 // Valid
 foo(new String[] { "a", "b", "c" };

 // Invalid
 foo({"a", "b", "c"});

至於目的 - 第一種語法的目的是允許變量聲明更簡潔......第二種語法的目的是作為表達式用於通用目的。 禁止變量聲明的第二種語法會很奇怪,因為可用的語法更簡潔。

它們幾乎是一樣的,但第一個適用於對象分配,如:

int[] anArray = {1, 2, 3};

另一個更像球狀

callingMyMethod(new Object[]{object1,object2});

語法錯誤

callingMyMethod({object1,object2});

讓我們進一步吧

這些初始化是正確的:

Object[] objeto={new Object(), new Object()};
Object[] objeto=new Object[]{new Object(), new Object()};

也是對的:

Object[] objeto;
objeto=new Object[]{new Object(), new Object()}

但正如喬恩所說,這是錯誤的:

Object[] objeto;
objeto={new Object(), new Object()};

為什么? 數組初始化器數組創建表達式

無論如何你的兩種語法都是正確的。 一方面對另一方沒有任何好處。

有趣的閱​​讀這個主題:

Oracle官方文檔中的數組

這一點也包含在這個主題中

這只是一個標准。 如果您使用:

  int[] anArray = new int[] {1, 2, 3};

你是說每個數字(1,2,3)都是一個int。 它不能是雙倍的,浮動的等等。這只是出於安全原因。

如果聲明應該在初始化之前完成,則可以使用第二種方式。

int[] arr;
arr = { 2, 5, 6, 12, 13 };

不行,所以你使用:

int[] arr;
arr = new int[]{ 2, 5, 6, 12, 13 };

代替。 另一種方法是聲明另一個變量:

int[] arr;
int[] tmparr = { 2, 5, 6, 12, 13 };
arr = tmparr;

因此,如果您不需要從初始化中分離聲明,那么只需要清理代碼(使用任何一個)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM