7

例如,大小为 32 的布尔数组是否会比整数变量占用更多空间?如果是这样,那么为什么和多少?

澄清:

在java中(如果相关,请原谅我 - 我不确定)。这条线:

boolean arr=new boolean[32];

占用比这条线更多的空间:

int num;
4

1 回答 1

8

Java中的 32 booleans 数组占用的空间大约是 Java 的 8 倍int。这是因为在大多数计算机体系结构中,最小的可寻址内存单元是 8 位字节,因此制作“打包”布尔值数组需要额外的开销。

如果您想每个布尔值使用一位,请使用BitSet类而不是布尔值数组。请注意,除了数据本身之外,您还会获得一些开销,因此仅将此类数据结构用于 32 位可能不够经济,不足以证明从简单数组切换的合理性。

于 2013-08-25T13:37:06.767 回答