数据类型是计算机语言里针对内存的一种抽象表达方式,也是语言的抽象原子概念,即语言中最基本的定义单元。Java是一种强类型语言,必须为每一个变量声明一种类型。基本类型是不同于类的特殊类型,在创建变量时不需要用new将对象(变量)存储在“堆”里,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,这样更加高效。
在Java中,一共有8中基本类型(primitive type),有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和布尔类型boolean。
Java要确定每种基本类型所占存储空间的大小,并不随机器硬件架构的变化而变化。所占存储空间大小的不变形是Java程序比用其他大多数语言编写的程序更具可移植性的原因之一。
简单类型 |
boolean |
byte |
char |
short |
Int |
long |
float |
double |
void |
二进制位数 |
1 |
8 |
16 |
16 |
32 |
64 |
32 |
64 |
-- |
封装器类 |
Boolean |
Byte |
Character |
Short |
Integer |
Long |
Float |
Double |
Void |
所有的数值类型都是无符号的数值类型,都有正负号。
Thinking in Java中将void也列为基本类型,我们都知道void一般作为一种函数的返回值类型,表示函数没有返回值的情况(return;)。它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。
Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java5.0(1.5)开始,JAVA虚拟机(Java Virtual Machine)可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。