Jav*_*107 5 java boolean primitive-types
可能重复:
Java - 布尔基元类型 - 大小
我设计了这个程序来计算boolean
Java中的大小.
public class BooleanSizeTest{
/**
* This method attempts to calculate the size of a boolean.
*/
public static void main(String[] args){
System.gc();//Request garbage collection so that any arbitrary objects are removed.
long a1, a2, a3;//The variables to hold the free memory at different times.
Runtime r = Runtime.getRuntime();//Get the runtime.
System.gc();//Request garbage collection so that any arbitrary objects are removed.
a1 = r.freeMemory();//The initial amount of free memory in bytes.
boolean[] lotsOfBools = new boolean[10_000_000];//Declare a boolean array.
a2 = r.freeMemory();
System.gc();//Request garbage collection.
a3 = r.freeMemory();// Amount of free memory after creating 10,000,000 booleans.
System.out.println("a1 = "+a1+", a2 = "+a2+", a3 = "+a3);
double bSize = (double)(a1-a2)/10_000_000;/*Calculate the size of a boolean
using the difference of a1 and a2*/
System.out.println("boolean = "+bSize);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,它说大小是1.0000016字节.现在,Oracle Java文档说a的大小boolean
是"未定义的".[见链接 ].为什么会这样?此外,boolean
变量代表1位信息(true
和false
),那么剩下的7位会发生什么?
访问 1 位是一项昂贵的操作;如果从内存中检索数据,您最有可能按字或按字节进行操作。在 Java 中,布尔值的内部表示是一个实现细节,除非您正在执行 VM 实现,否则您不应该关心它。