7

据我所知,布尔大小为 16 字节 {8 作为标头,1 有效负载,* 对齐到 8}

如果布尔变量是一个数组需要多少...

我的参考

4

2 回答 2

6

你问的是Boolean对象还是boolean原语?对象的大小可能是 16 个字节(尽管可能取决于实现),而boolean可能会消耗 4 个字节(int隐式使用)。

因此boolean[]将消耗N * 4字节(N数组的大小在哪里)+一些对象头。Boolean[]将消耗N * 16+ 标头(根据您对Boolean大小的假设。

话虽这么说,请考虑编写自己的类数组类并将 32 个布尔值打包成一个int(您必须手动编写一些位操作),就像BitSet类正在做的那样。

于 2012-06-26T07:09:03.427 回答
-1

数组对象大小将为:8 + 4 = 12 字节(这里 4 是数组的长度)如果数组长度为 N,则布尔元素将为:N*16 字节因此大小为:(12 + N * 16 ) 字节四舍五入 (ceil) 8

举个例子:如果N = 10,那么12 + 10 * 16 = 172,经过JVM四舍五入后,大小为176字节。

于 2012-06-26T07:32:19.457 回答