Java trie 节点 boolean 值与 boolean 值

标签 java boolean

我正在创建 trie 节点类,其中包含具有逻辑类型的字段,但我不知道使用 boolean 值或 boolean 值哪个更好。

我知道 boolean 值的一个实例需要 16 个字节,而 4 个字节需要它在 32 位 VM 中引用。但是Boolean有常量Boolean.TRUE和Boolean.FALSE,可以用来空间优化什么的。所以应用程序将占用 4*N+32 字节,其中 N 是节点数,是吗?

据我所知, boolean 值在 32 位 VM 中也需要 4 个字节(在数组中它优化为每个元素 1 个字节)

但是我可以使用这样的代码

boolean EOW = Boolean.TRUE;

但是自动装箱/收件箱需要多少空间和多少时间?

那么用什么来优化空间使用和时间会更好呢? 您能回答我它在 64 位虚拟机上占用多少空间吗?

最佳答案

取而代之的是:

boolean EOW = Boolean.TRUE;

就这么写吧

boolean EOW = true;

没有理由使用 Boolean.TRUE,它会自动拆箱为原始值 true 无论如何,使用该值更高效且更简洁true 直接。

仅在有充分理由时才使用包装类,例如 Boolean - 否则,请使用原始类型,例如 boolean。使用包装器的一个原因是当您需要将值存储在集合中时(例如 ArrayList)- 集合类只能保存对象而不能保存原始值,因此您必须使用包装器在那种情况下上课。

使用 Boolean 对象永远不会比使用 boolean 原始值更有效。

请注意,原始值只是,而不是对象。如果您在代码中使用值 true 十次,内存中将不会有十个重复对象。

关于Java trie 节点 boolean 值与 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29577093/

相关文章:

java - 方法链接,从列表返回一个对象并从中获取值

java - 什么 OOP 概念可以处理以下情况?

Java 将 double 更改为 Date

java - 为什么 YAML 解析出来的时间戳不对?

c++ - C++中的双重否定

C++ boolean 数组初始化

java - JodaTime 类型转换

java - 跨所有线程使用 Realm

python - 在 Python 中动态评估简单的 boolean 逻辑

python - 在 Python 中是否有任何合法使用 list[True]、list[False] 的方法?