package caf;
public class CVF
{
public static void main(String[] args)
{
n();
}
public static void n()
{
boolean a;
a = true;
a = false;
boolean[] b = new boolean[1];
b[0] = true;
b[0] = false;
/* 0: iconst_1
1: istore_0
2: iconst_0
3: istore_0
4: iconst_1
5: newarray boolean
7: astore_1
8: aload_1
9: iconst_0
10: iconst_1
11: bastore
12: aload_1
13: iconst_0
14: iconst_0
15: bastore
16: return
*/
}
}
这里可以看到,单个布尔是以int来存储的,而java里1表示true,0表示false,而布尔数组是以byte数组存储。考虑到内存占用的情况,使用位来表示布尔比较好,类似于BitSet用boolean表示位一样。
下边在看下datainputstream中readboolean方法的源码
public final boolean readBoolean() throws IOException {
int ch = in.read();
if (ch < 0)
throw new EOFException();
return (ch != 0);
}
这也就好解释了布尔的存储方式。