布尔数组是否比相同大小的数字占用更多的空间?

use*_*335 4 java arrays size boolean

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

澄清:

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

boolean arr=new boolean[32];
Run Code Online (Sandbox Code Playgroud)

比此行占用更多空间:

int num;
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

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

如果您想每个布尔使用一位,请使用BitSetclass而不是布尔数组。请注意,除了数据本身之外,您还会得到一些开销,因此仅使用32位这样的数据结构可能不足以证明从简单数组切换出来是不经济的。

  • @ user2705335正确,Java使用8位作为其布尔值。 (2认同)