2012-12-22 112 views
1

我對java中的數組有一些疑問:Java計數數組對象

在下列表達式中創建了多少個對象?

(a)new int[0]:有一個對象被創建,一個大小爲0的數組。

(b)new int[2][2]:有一個對象創建,一個數組有2行和列。

(c)new int[2][]:沒有創建對象?

我想知道如果我的解決方案旁邊的表達式是正確的。如果沒有,希望你能幫忙,並給我一些關於他們的解釋。我真的不知道我應該做什麼。

在此先感謝!

+0

解釋你的問題 –

+1

看起來像一個考試問題。 _「我不太確定這個問題的含義」_? – Henrik

+1

a)一個對象b)3個對象c)1個對象 – nhahtdh

回答

3

新INT [0]

是這是一個空數組,則創建一個對象。

int[] emptyArray = new int[0]; 
    System.out.println(emptyArray.length); // Outputs 0 

新INT [2] [2]

是這創建和陣列2點的行和列,被創建3個對象。

int[][] bar = new int[2][2]; 
    System.out.println(bar.getClass()); // Outputs class [[I 
    int[] bar1 = bar[0]; 
    System.out.println(bar1.getClass()); // Outputs class [I 
    int[] bar2 = bar[1]; 
    System.out.println(bar2.getClass()); // Outputs class [I 

新INT [2] []

Java支持交錯數組。這意味着當您創建int[2][]時,這意味着您擁有各種尺寸的int[]。這裏只創建一個對象。

int[][] foo = new int[2][]; 
    System.out.println(foo[0]); // Outputs null 
    System.out.println(foo[1]); // Outputs null 
    foo[0] = new int[10]; 
    foo[1] = new int[5]; 
+0

我明白你做了什麼,但有多少「對象」被創建?我的意思是如果你只是編碼int [] [] foo = new int [2] [];不會有任何對象嗎?因爲空的[] []必須先填充? – user1923369

+1

我相信'new int [2] []'只會創建一個對象,它是數組對象本身。我可能錯了。 –

+0

是的,我認爲Eng.Found是正確的。每個情況下只有一個對象,因爲用戶正在添加數據類型。但是,多個存儲位置將被分配 –

4

以下是從Java規範的摘錄:

在Java編程語言陣列對象(第4.3.1節),是 動態創建的,並且可以被分配到的變量鍵入對象 (§4.3.2)。可以在數組上調用Object類的所有方法。

這意味着每個數組都是一個自己的對象,這使得您的回答a)正確。創建

B) 3對象:1個陣列的第一和含有各2組int的兩個陣列。我不會指望int -entries,因爲它們是Java中的基本類型。

c) 1個對象被創建:1個包含兩個空條目的數組。

+0

我相信我現在明白這一點,非常感謝您的幫助! – user1923369