至于我的理解对象是任何实体的内存分配的同义词。
String array[]=new String[0];
因为数组的大小为零,并且在数组的情况下不能增加,所以为这个零大小的数组对象分配了什么样的内存?
答案 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
希望能回答你的问题。