2012-11-09 113 views
5

當我寫這篇文章什麼時候在Java中初始化數組?

String[] fruits = {"Apple", "Pear"}; 

我預計在編譯時數組和字符串創建,像它會發生在C.類似的代碼是否正確?數組及其內容通常是在編譯時還是在運行時創建的?

回答

8

陣列,which are objects in Java,被創建。這隻能在運行時發生。

請注意,很多對象是在Java程序中創建的,並且您的對象創建僅在虛擬機本身初始化後纔會發生。一個靜態數組初始化不會給你的性能帶來明顯的負擔。

如果不改變數組,你有很多情況下,一定要聲明爲靜態:

static String[] fruits = {"Apple", "Pear"}; 

還要注意什麼可能是一個靜態編譯陣列的一個重要區別是:Java數組是可變的。您無法更改其長度,但可以更改其元素(或使其無效)。一個java數組,甚至是最終的靜態數據,並不是真正的常量。

5

數組是java中的特殊對象。所以,它們將在運行時創建。

作爲每Java Language Specification

在Java編程語言中,陣列是(第4.3.1節),是動態創建的對象,並且可以被分配給Object類型的變量(§4.3.2)

JLS 15.10提供了關於數組創建表達式的更多信息。

相關問題