2014-11-04 80 views
-3

我谈论Integer对象数据类型,而不是原始intJava:如何获得整数(对象)数组的大小?

假设这样的:

Integer[] arr = new Integer[5]; 
    arr[0] = 2; 
    arr[1] = 2; 
    arr[2] = 3; 

则数组看起来像这样{2,2,3,null,null}

我怎样才能获得数组的大小?在这种情况下,大小为5

+0

与其他任何数组相同的方式:'arr.lehgth'。 – 2014-11-04 19:13:36

+0

'null'是所有对象数组的默认元素值。 – 2014-11-04 19:15:07

+0

我将此问题标记为收藏夹,因为我误解了它。我认为问题在于*将使用多少内存(以字节为单位)*。这将如何完成? – 2014-11-05 18:38:42

回答

4

相同的方式,对任何其他阵列 - 使用length字段:

int length = arr.length; // 5 

JLS section 10.7

数组类型的成员是以下全部:

  • 公共最终字段length,其中包含comp的数量阵列的蚂蚁。长度可能是正数或零。
  • ...

如果要算上非空值,你会使用类似:

int count = 0; 
for (Integer value : arr) { 
    if (value != null) { 
     count++; 
    } 
} 

(我敢肯定有一个聪明的方法做这在更少的行中使用Java 8中的流API,但让我们现在保持简单...)

+0

虽然初始化了5个元素,不会返回5吗?我想他是在问如何确定有多少元素不为空。 – SnakeDoc 2014-11-04 19:13:59

+3

@SnakeDoc:我不这么认为 - 看问题:“在这种情况下,大小是5” – 2014-11-04 19:14:26

+0

@SnakeDoc在这里与Skeetmeister达成协议。这个问题的措辞似乎表明,OP对*所有成员*感兴趣,无论是否为空。 – christopher 2014-11-04 19:15:03