问题看似很简单,相信大多数同学都认为是一个字节,但是我查询到的答案,有些特别哦,呵呵,如下:
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.
那么,具体的,它应该是占几个字节呢?我也不知道这算不算钻牛角尖了,不过突然心里有这么一个疑问得不到解决,就是别扭哇,嘿嘿。
在线看到的同学们也说说自己认为的答案跟理由!我感觉这个问题,可以帮助我们了解一下程序执行时内存中数据的实际情况。
最好老师能来解答一下,谢谢! |