一、分类
基本类型(primitive type):byte、short、int、long、float、double、char、boolean,共计8种。
引用类型(reference type):除了基本类型,剩下的都是引用类型,包括Java 5以后引入的枚举类型,也算是一种比较特殊的引用类型。
二、基本数据类型
类型 | 位数(bit) | 字节数(Byte) | 分类 |
---|---|---|---|
char | 16 | 2 | 字符类型 |
byte | 8 | 1 | 整数类型 |
short | 16 | 2 | |
int | 32 | 4 | |
long | 64 | 8 | |
float | 32 | 4 | 浮点类型 |
double | 64 | 8 | |
boolean | - | - | 布尔类型 |
温馨提示:
在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就boolean类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean 这个类型,boolean类型在编译后会使用其他数据类型来表示,那boolean类型究竟占用多少个字节?
根据http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官方文档的描述:
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
可以看出,boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都非常的重要。
三、引用类型