【问题标题】:Does a boolean array take more space than a number of the same size?布尔数组是否比相同大小的数字占用更多空间?
【发布时间】:2013-08-28 01:54:54
【问题描述】:

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

澄清:

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

boolean arr=new boolean[32];

占用比这一行更多的空间:

int num;

【问题讨论】:

    标签: java arrays size boolean


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!澄清一下:这是否意味着布尔变量需要 8 位数据但只使用一位,而忽略其他 7 位?
    • @user2705335 正确,Java 使用 8 位作为其布尔值。