什么样的内存分配给大小为零的数组对象?

时间:2015-04-22 06:24:53

标签: java arrays string

至于我的理解对象是任何实体的内存分配的同义词。

String array[]=new String[0];

因为数组的大小为零,并且在数组的情况下不能增加,所以为这个零大小的数组对象分配了什么样的内存?

3 个答案:

答案 0 :(得分:4)

它通常用于表示阵列中没有元素。这可以被认为更加友好"而不是代表"没有数据"通过null,允许迭代而不抛出异常:

for (int i=0; i<array.length; i++){
    // Do stuff, will not throw NullPointerException
}

如果需要,这也允许转换为List

答案 1 :(得分:2)

仍会分配内存,尽管数组中没有值,只有数组头。标题包含特定标志,数组长度以及数组类型(此处为Object)。编译器不会忽略此数组,即使它的长度为零,因为它仍然可以被引用,并且可以使用System.arraycopy()等来调整大小。

创建数组而不是将其设置为null的好处是可以安全地遍历for循环而不抛出NullPointerException

答案 2 :(得分:1)

单维数组是单个对象。正如所料,该数组具有通常的对象头。但是,此对象头是12个字节,以容纳四个字节的数组长度。

参考: http://www.javamex.com/tutorials/memory/array_memory_usage.shtml

希望能回答你的问题。