此处的 Java 参考表明布尔类型虽然用“位”信息表示,但没有精确定义的大小。相比之下,其他类型似乎表明定义了大小。例如,一个int是 32 位,故事结束。
当我们查看BitSet的规范时,我们可以看到它由布尔值组成。通过上面的参考,这似乎表明BitSet的“大小”是未定义的——毕竟它是由布尔值组成的。果然,文档指定:
请注意,大小与位集的实现有关,因此它可能会随着实现而改变。
所以我的问题是,为什么不使用另一种精确定义的数据类型来实现BitSet ?例如,如果我们使用一个字节,我们可以保证 8 位的大小,并且我们不会有大小可能不是我们想象的那样的模糊感觉。确实,大小必须能被 8 整除,但至少这种方式似乎更具大小确定性。
如果我们有一个绝对不能超过某个内存容量的系统,那么拥有一个在大小方面精确的BitSet实现似乎很有用。