为什么java中的boolean长度是一个bit,一个字节占8bit,那剩下的7bit怎么办?是不是数据类型不能从一个字节的中间开始。

解决方案 »

  1.   

    boolean是占1个字节,即8bit,怎么变成长度是1bit了?
      

  2.   

    1个字节,但只有1个bit有作用。在汇编里面也似这样啊!
      

  3.   

    不是一个bit。"虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer返回来处理的。boolean型的数组则是用byte数组来处理的。"声明一个布尔变量,再赋值为true,用javap命令显示字节码为:
    0: iconst_1
    1: istore_1所以应该是4个字节。
      

  4.   

    字节是系统分配内存的最小单位。
    boolean是分配一个字节,但是只有一个bit有用,其他无效置0
      

  5.   

    看具体实现吧,有些貌似是判断这个byte不为0,都算true
      

  6.   

    JDK 中src.zip里DataInputStream的源码 public final boolean readBoolean() throws IOException {
    int ch = in.read();
    if (ch < 0)
        throw new EOFException();
    return (ch != 0);
        }
      

  7.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lanseqiuyu】截止到2008-07-03 21:10:27的历史汇总数据(不包括此帖):
    发帖的总数量:6                        发帖的总分数:230                      
    结贴的总数量:2                        结贴的总分数:150                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:4                        未结的总分数:80                       
    结贴的百分比:33.33 %               结分的百分比:65.22 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主该结一些帖子了
      

  8.   


    正解单个布尔类型变量使用 int 值来表示,布尔数组采用 byte 数组来表示。true 使用 int 常量 1 表示,false 使用 int 常量 0 表示。3 楼的字节码指令就很能说明问题,在编译后 JVM 采用 int 数据对布尔值进行处理。再看一下 boolean 数组的字节码,在存储时 JVM 指令使用的是 bastore 而不是 istore,
    因此可以看出 boolean 数组内部使用的是 byte 类型。