2012-12-22 76 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