java程序运行的时候,java虚拟机都会同步创建一个栈桢,用以存放存储局部变量表,操作数栈,动态连接,方法出口等信息。而编译期可知的java虚拟机基本数据类型就放在局部变量表中。
java语言提供了8种基本数据类型
长度:1byte (字节) = 8bit (位)
数字类型- 整型
byte
引用数据类型:java.lang.Byte
byte是1字节8位,有符号的,默认值是0,范围 -128(-2^7)~ 127(2^7-1)
byte用在大型数组中主要代替整型可以节约空间,毕竟它只占1字节
short
引用数据类型:java.lang.Short
short是2字节16位,有符号的,默认值是0,范围 -32768(-2^15)~ 32767(2^15 - 1)
short也可以像byte那样节约空间
int
引用数据类型:java.lang.Integer
int是4字节32位,有符号的,默认值0,范围 -2,147,483,648(-2^31)~ 2,147,483,647(2^31 - 1)
这个比较常用,一般来说,整型的变量默认就是int型
long
引用数据类型:java.lang.Long
long是8字节64位有符号的,默认值0L,范围 -9,223,372,036,854,775,808(-2^63)~ 9,223,372,036,854,775,807(2^63-1)
一般需要比较大的整数时会用到long
数字类型- 浮点型
float
引用数据类型:java.lang.Float
float是单精度4字节32位,默认值0.0f
但是浮点数并不能用来表示精确的数值,如货币。
double
引用数据类型:java.lang.Double
double是双精度8字节64位,默认值0.0d,浮点数的默认类型就是double
同样不能用来表示精确的数值
字符类型
char
引用数据类型:java.lang.Character
char是一个单一的2字节16位Unicode字符
它可以存放任何字符
布尔类型
boolean
引用数据类型:java.lang.Boolean
取值只有true / false 两种
一般用以作标记判断
对于boolean的长度,在《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,
具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的
这些数据类型在局部变量表中的存储空间以局部变量槽表示,其中64位长度的long型和double会占2个变量槽,其余的各占1个变量槽。局部变量表所需的内存在编译期间完成分配,当进入一个方法时,这个方法在栈桢中所需要多大的局部变量空间是完全确定的,所以在方法运行时期,不会改变局部变量表的大小。