在Java程序运行时有6个地方可以存储数据:
- 寄存器(registers):这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。
- 堆栈(stack):位于通用RAM中,但通过“堆栈指针”可以从处理器那里获得直接支持。储存对象的引用。
- 堆(heap):一种通用的内存池(也位于RAM区),用于存放所有的Java对象。
- 静态存储(static storage):这里的“静态”指的是“在固定的位置”(尽管也在RAM里),存放程序运行时一直存在的数据。
- 常量存储(constant storage):常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
- 非RAM存储(NO-RAM storage):如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序中没有运行时也可以存在。如:流对象,持久化对象。
基本类型是数据储存的特例:
new将对象储存在“堆”里,然而对于特别小,或者简单的对象,这样做的效率太低,因此基本数据便不用new来创建对象,并存放在“堆栈”中:
基本类型 | 大小 | 包装类 |
boolean | -(true、false) | Boolean |
char | 16-bit (Unicode 0~Unicode 216-1) | Character |
byte | 8-bit(-128~128) | Byte |
short | 16-bit | Short |
int | 32-bit | Integer |
long | 64-bit | Long |
float | 32-bit | Float |
double | 64-bit | Double |
void | - | Void |