我正在创建 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/