以下程序段执行后将有()个字节被写入到文件afile.txt中。
try { FileOutputStream fos = new FileOutputStream("afile.txt"); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(3); dos.writeChar(1); dos.close(); fos.close(); } catch (IOException e) {}
Java基本类型占用字节数
类型 | 占用字节 |
---|---|
byte | 1字节 |
short | 2字节 |
int | 4字节 |
long | 8字节 |
char | 2字节 |
float | 4字节 |
double | 8字节 |
boolean | 4字节(数组里的单个布尔值占用1字节) |
看到白起丶的回答,突然好奇boolean
为什么如此奇怪,特地去了解学习了一下——
JVM
规范中说:“Java语言表达式所操作的boolean
值,在编译之后都使用Java
虚拟机中的int
数据类型来代替,而boolean
数组将会被编码成Java
虚拟机的byte
数组。”
但Java虚拟机中没有任何供boolean
值专用的字节码指令。这说明boolean
作为八大基本类型之一,居然是语法糖实现!
最后,乔戈里的文章里的说法好:“看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。”
参考文章: