数据类型介绍占用默认值最小值最大值 byte 有符号,以二进制补码表示的整数 8bit0-128
(-2^7)127(2^7 - 1)short 有符号,以二进制补码表示的整数 16bit0-32768(-2^15)32767
(-2^15 - 1)int 有符号,以二进制补码表示的整数 32bit0-2 亿多(-2^31)2 亿多(-2^31 - 1)
long 有符号,以二进制补码表示的整数 64bit0L-2^632^63 - 1float 单精度,有符号,符合 IEEE
754 标准的浮点数 32bit0.0f1.4E - 453.4028235E38double 双精度,有符号,符合 IEEE 754 标
准的浮点数 64bit0.0d4.9E - 3241.7976931348623157E308boolean 真或假 32bit / 8bitfalsechar
无符号,Unicode 字符 16bit\u0000\u0000(十进制 0)\uffff(十进制 65535)
需要注意的是:
在 Java 定义的八种基本数据类型中,只有 boolean 类型没有给出具体的占用字节数,因为 JVM
中没有供 boolean 值专用的字节码指令,可以说 JVM 中根本就不存在 boolean 这个类型。
boolean 变量在编译后会使用 int 类型来代替,而 boolean 数组会被编译成 byte 数组,每个
boolean 元素占 8bit。因此,boolean 在单独使用时占 32bit,作为数组元素占 8bit。
之所以使用 int 代替 boolean 而不用 byte 或 short 的原因是:虽然 byte 和 short 更节省内存,
但是对于当下 32 位的 CPU 来说(不是 32 位系统,CPU 硬件层面),一次性处理数据是 32
位的,CPU 直接处理一个占 32 位的数据具有高效存取的特点。
float 和 double 的最小值和最大值都是以科学计数法的形式输出的,其中"E"之前的数字是尾
数,"E"之后的数字是指数,10 是基数。例如:3.14E3 = 3.14 × 10^3。
char 类型可以赋值为整数,范围是[ 0,65535 ]。十进制、八进制、十六进制均可,输出的
是字符码表中对应的字符。char 类型变量可以进行运算的原因是:char 字面量在 ASCII 等字
符编码表中有对应的数值。
char 字符进行运算时,直接当作 short 类型的数值处理。
评论0