以下讨论基于32位cpu卤煮整理的一些背景知识:1. JAVA规范没有明确指出boolean占几个字节
2. JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理。
3. JVM以计算机的字长作为最小处理单位。卤煮的问题:既然JVM以字长作为最小处理单元,那么byte,short 类型也要占用一个字长即32位吗?
如果不是,也就是说可以把byte当1字节处理,short当2字节处理,那么为什么要把boolean作为4字节处理,岂不是更浪费内存空间。

解决方案 »

  1.   

    boolean占1个bit,1/8个字节
      

  2.   

    在java的基本数据类型中,boolean占一个字节,默认值为false.取值范围是{true,false}
      

  3.   

    http://blog.csdn.net/q745401990/article/details/8049755
      

  4.   

    3. JVM以计算机的字长作为最小处理单位。
    对这句话存在怀疑,jvm的最小处理单元不太可能是计算机字长吧.,所谓字长是同一时间中处理二进制数的位数,
    字长可以是很多字节数组的加起来进行处理。
    我认为是一个字节,boolean在表示的时候是只有0和1,为八分之一个字节,但是放到jvm中运行的时候,
    最小单位为一个字节,将提升为1byte
      

  5.   

    byte,char,boolean,short对这些类型的任何一个进行算术运算, 都会获得一个int结果。
      

  6.   

    1个字节=8位(bit)
      

  7.   

    boolean不是数字,只能有两个值,只代表1比特信息,其字节大小并没有确切的定义。
    http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html:
    The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
      

  8.   

    JVM可以按实际需要组织其信息吧,虽然不是固定字节数,但和c++ 中的int字节数不固定是不同的。
      

  9.   

    你可以看看官方文档,明确说明boolean代表的是一位的信息,但是所占的字节没有说,不要想当然和其他语言一样了,而且think in java 中写的时候也没说占几个字节
      

  10.   

    32 位 CPU 使用 4 个字节是最为节省的,哪怕你是 1 个 bit 他也是占用 4 个字节。因为 CPU 寻址系统只能 32 位 32 位地寻址。
      

  11.   

    boolean占1个bit,1/8个字节
      

  12.   

    1)boolean a=true;//这个a在JVM中占4个字节即:32位。
    2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。
     理由:
    1)JAVA规范中没有定义boolean类型的大小。
    2)但是:在JVM规范第2版中讲得十分清楚。我上边的结论就是从它当中取出来的。
     根据:(JVM规范第2版 3.3.4节)
    Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java virtual machine int data type. 
     Where Java programming language boolean values are mapped by compilers to values of Java virtual machine type int, the compilers must use the same encoding. 而:Java virtual machine type int, whose values are 32-bit signed two's-complement integers。
    Arrays of type boolean are accessed and modified using the byte array instructions 
     In Sun's JDK releases 1.0 and 1.1, and the Java 2 SDK, Standard Edition, v1.2, boolean arrays in the Java programming language are encoded as Java virtual machine byte arrays, using 8 bits per boolean element.
      

  13.   

    其实从性能来看,32位的机器,处理32位的int是最快的。比byte,short等都会快很多。所以放置一个type时最好的选择是int type。 short,byte,long甚至char其实它们的字节数都是有含义的。所以java需要指定字节。而boolean字节完全没有意义,就按照最快的来算了。不过由于使用虚拟机的问题。即使是64位的机器,int还是在使用32位。这时,可能会有些影响。
      

  14.   

    我记得看过 和int是一样的。其实不差这一点的
      

  15.   

    short也是和int一样多的,没错。
      

  16.   

    32bit  4字节不用在纠结 了