【2016-3-24】去一公司面试时,做了一套基本的笔试题,其中开头的10分的题居然是写出常用的Java基本数据类型的宽度。由于,目前的开发工作中,还没有深入或者说用到这种细节的地方。当时只凭大学初学时加上后来的逐渐理解,把它完成了。不过至于Long,Char占多少Byte,没有把握,好汗颜~ 原来,1long=8byte!!!
于是,回来网上查阅并总结一下,把常用的基本数据类型的所占字节宽和取值范围,大致做个笔记备忘:
Java基本数据类型
|
内存大小
|
取值范围
|
默认值(备注)
|
Byte
|
1byte = 8bit
|
|
0
|
Boolean
|
1boolean = 1byte = 8bit
|
true/false
| false |
Short
|
1short = 2byte = 16bit
|
|
0
|
Char
|
1char = 2byte = 16bit
(Unicode-16)
|
|
'\u0000'
|
Int
|
1int = 4byte = 32bit
|
|
0
|
Float
|
1float = 4byte = 32bit
|
大约:-3.40292347E+38~3.40292347E+38(有效位数6-7位) | 0.0F |
Long
|
1long = 8byte = 64bit
|
-9233372036854477808~9233372036854477807
|
0L
|
Double
|
1double = 8byte = 64bit
|
大约:-1.79769313486231570E+308~1.79769313486231570E+308(有效位数15位)
|
0.0D
|
网上说:布尔类型boolean比较特殊,尽管Java虚拟机定义了boolean类型,但虚拟机对boolean类型的支持是有限的,没有为boolean值单独设计JVM指令。操作布尔值的表达式在编译之后,它使用的是JVM的int数据类型,也就是占用4个字节。
JVM也不会直接支持boolean数组,boolean数组在编译之后,它的元素采用byte数据类型,用0表示false,1表示true,也就是boolean数组的元素只占用一个字节。
初记:2016-3-24 23:04
最后更新:2020-4-25 13:26