java中布尔值的位深度是多少?

时间:2010-01-07 19:07:07

标签: java

  

可能重复:
  Java - boolean primitive type - size

     

可能重复: Why is Java's boolean primitive size not defined?

有人问我一个问题,但我没有正确地回答这个问题。它与尺寸有关吗?如果是的话答案是什么?

6 个答案:

答案 0 :(得分:4)

来自Sun的Java教程:

  

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

- http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html

答案 1 :(得分:2)

答案是“特定于JVM”

  

布尔表示一位信息   它是如何存储的(无论是每个内存字一个布尔值,还是用单个字中的其他布尔值打包,或者以一种完全不同的方式,每个布尔值占用1000个字节)取决于JVM,只要其他JLS规定原始类型得到满足。


表达式“位深度”可能是指“每个XXX的位数”(此处为“每布尔位数(s)”),因为for pictures (每个数据像素x位)。

alt text

  

8位图像的每个像素用可能的256种色调或颜色之一来描述   24位图像的每个像素用可能的1670万种色调或颜色中的一种来描述   图像的“位深度”越高,颜色或色调质量越高。

答案 2 :(得分:1)

Java字节代码没有数据类型'boolean',因此布尔基元转换为整数(32位)(布尔数组除外,其中布尔值由位表示)。

答案 3 :(得分:0)

我猜内存中的实际大小取决于JVM,但理论上布尔值可以表示为1或0(1位)。

答案 4 :(得分:0)

布尔值是一个真值或假值,可以存储在一个孤独的单位内存中。但是规范中没有列出确切的要求,有些操作系统不能写入一点,但最低限度写入一个字节,因此默认情况下最终可能会使用一个字节,即使只需要一点点。

答案 5 :(得分:0)

“位深度”可能与布尔值可以采用的值有关。在大多数语言中,它可以采用两个值:truefalse。在面向对象语言中,如果布尔值是一个对象(如Java中的Boolean),则该值也可以是null(除了null之外,某些语言支持一个名为uninitialized的状态,这可能意味着任何价值)。

内存中布尔值的大小是一个完全不同的问题。如前所述,对于Java,它是未定义的,如果我没记错,它可能取决于程序运行的系统的WORD大小。从理论上讲,布尔值可以是一位大小,但只有当我们需要很多布尔值时,我们才能使用它(称为标志变量),因为我们绑定到任何系统的WORD边界。

编译图像中的大小可能会再次不同(如果是常量),但通常不需要担心。