【发布时间】:2013-08-28 01:54:54
【问题描述】:
例如,大小为 32 的布尔数组是否会比整数变量占用更多空间?如果是这样,那么为什么和多少?
澄清:
在 java 中(如果相关,请原谅我 - 我不确定)。这条线:
boolean arr=new boolean[32];
占用比这一行更多的空间:
int num;
【问题讨论】:
例如,大小为 32 的布尔数组是否会比整数变量占用更多空间?如果是这样,那么为什么和多少?
澄清:
在 java 中(如果相关,请原谅我 - 我不确定)。这条线:
boolean arr=new boolean[32];
占用比这一行更多的空间:
int num;
【问题讨论】:
Java 中包含 32 个booleans 的数组占用的空间大约是 Java int 的八倍。这是因为在大多数计算机体系结构中,最小的可寻址内存单元是 8 位字节,因此制作“打包”布尔数组需要额外的开销。
如果您希望每个布尔值使用一位,请使用BitSet 类而不是布尔值数组。请注意,除了数据本身之外,您还会获得一些开销,因此仅将此类数据结构用于 32 位可能不够经济,不足以证明从简单数组切换的合理性。
【讨论】: