Java 布尔与字节

Java 布尔与字节,java,byte,Java,Byte,这是一个非常简单但可能毫无价值的问题:以下两个问题中的哪一个会消耗更多内存 boolean[][] var = new boolean[32768][32768]; 或 我听说java在这两种情况下都将每一段数据存储在自己的字节中。那么哪一个更有效呢?是否可以以某种方式将long值视为boolean数组 布尔数据类型只有两个可能的值:true和false。将此数据类型用于跟踪真/假条件的简单标志。此数据类型表示一位信息,但其“大小”并不是精确定义的 但是,在Oracle JVM中,它每比特使用

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

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

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

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

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

如果您想使用1位/位,我建议使用位集

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

是的,不过我想不出你为什么要这么做。

来自

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

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

如果您想使用1位/位,我建议使用位集

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


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

你在哪里听到这些谣言的?我投票结束这个问题,因为这是一个实现细节,并通过一个简单的实验得到了简单的回答。检查这个:当使用基元类型时,你真的不应该担心性能。唯一需要记住的是,在处理大型数据集时,基本类型(字节、整数等)的引用类型兄弟在内存方面肯定更昂贵。但除非你在交易10或100的数千件物品;你真的不必在意。你是从哪里听到这些谣言的?我投票将这个问题作为离题回答,因为这是一个实现细节,并且通过一个简单的实验来回答。检查这个:当使用基本类型时,你真的不应该担心性能。唯一需要记住的是,在处理大型数据集时,基本类型(字节、整数等)的引用类型兄弟在内存方面肯定更昂贵。但除非你在交易10或100的数千件物品;你真的不需要在意。
byte[][] var = new byte[32768][32768];