【问题标题】:boolean Vs. byte [duplicate]布尔值字节[重复]
【发布时间】:2016-07-06 10:13:20
【问题描述】:

这是一个非常简单且可能毫无价值的问题:以下两个中的哪个消耗更多内存?

boolean[][] var = new boolean[32768][32768];

byte[][] var = new byte[32768][32768];

我听说java 在这两种情况下都将每条数据存储在它自己的byte 中。那么哪个更有效呢?是否可以以某种方式将long 值视为boolean 数组?

【问题讨论】:

  • 你从哪里听到这些谣言的?
  • 我投票决定将此问题作为离题结束,因为这是一个实现细节,可以通过一个简单的实验轻松回答。
  • 你真的不应该担心使用原始类型时的性能。唯一要记住的是,当您处理 大量 数据集时,原始类型(字节、整数、...)的引用类型兄弟在内存方面肯定更昂贵。但除非您处理 10 或 100 件数千件商品;你真的不需要关心。

标签: java byte


【解决方案1】:

来自Primitive Data Types

布尔数据类型只有两个可能的值:真和假。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型代表一种信息,但它的“大小”并不是精确定义的。

但是,在 Oracle JVM 中,它使用每位 1 字节,因此内存大小和效率是相同的。

如果您想使用每位一位,我建议使用 BitSet。

是否有可能以某种方式将 long 值视为布尔数组?

是的,虽然我无法想象你为什么想要这样做。

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 2015-05-02
    • 2011-01-13
    • 2019-02-23
    相关资源
    最近更新 更多