Java计数数组对象

时间:2012-12-22 10:50:00

标签: java arrays object counting

我对java中的数组有一些疑问:

在以下表达式中创建了多少个对象?

(a)new int[0]:创建了一个对象,一个大小为0的数组。???

(b)new int[2][2]:创建了一个对象,一个包含2行和列的数组。???

(c)new int[2][]:没有创建对象???

我想知道表达式旁边的解决方案是否正确。如果没有,希望你能帮忙并给我一些解释。我真的不明白我应该做的事情。

提前致谢!

2 个答案:

答案 0 :(得分:4)

以下是Java规范的摘录:

  

在Java编程语言中,数组是对象(§4.3.1),是   动态创建,可以分配给Object类型的变量   (§4.3.2)。可以在数组上调用Object类的所有方法。

这意味着每个数组都是一个自己的对象,这使得你的答案 a)正确。

b)创建了3个对象:第一个数组和两个包含每个2 int的数组。我不会计算int - 条目,因为它们是Java中的原始类型。

c)创建了一个对象:1个包含两个空条目的数组。

答案 1 :(得分:3)

new int [0]

是的,这是一个空数组,创建了一个对象。

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

new 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

new 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];