一切都是对象数组
操纵的标识符其实是对象的一个“引用”(reference).能够想象成用遥控(引用)操纵电视机(对象)。spa
对象存储的地方指针
寄存器对象
这是最快的存储区,位于处理器内部。寄存器的数量极其有限,因此寄存器根据需求进行分配。不能直接控制,也不能在程序中感受到寄存器存在的任何迹象。(C和C++容许向编译器建议寄存器的分配方式)生命周期
堆栈内存
位于通用RAM(随机访问存储器)中,经过堆栈指针能够从处理器得到直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放内存。建立程序时,Java系统必须知道存储在堆栈内全部项的确切生命周期,以便上下移动堆栈指针。某些Java数据存储于堆栈中——对象引用,Java对象并不存储与其中。ci
堆编译器
一种通用的内存池(也位于RAM去),用于存放全部的Java对象。堆不一样于堆栈的好处是:编译器不须要知道存储的数据在堆里存活多长时间。在堆里分配存储有很大的灵活性。用堆进行存储分配和清理可能比用堆栈进行存储分配须要更多的时间(若是能够在栈中建立对象)。编译
常量存储table
常量值一般直接存放在程序代码内部。有时,在嵌入式系统中,常量自己会和其余部分分隔开,这种状况下,能够选择将其存放在ROM(只读存储器)中。
非RAM存储
若是数据彻底存活于程序以外,那么它能够不受程序的任何控制,在程序没有运行时也能够存在。其中两个基本的例子是流对象和持久化对象。在流对象中,对象转化成字节流,一般被发送给另外一台机器。在“持久化对象”中,对象被存放于磁盘上,一次,即便程序终止,它们仍能够保持本身的状态。
基本数据类型
基本数据类型的变量直接存储“值”,并置于堆栈中。
Java的基本数据类型所占存储空间大小肯定。这种所占存储空间大小的不变形是Java程序比用其余多数语言编写的程序更具可移植行的缘由之一。
高精度数字
Java提供了两个用于高精度计算的类:BigInteger和BigDecimal。两者没有对应的基本类型。
BigInteger支持任意精度的整数。
BigDecimal支持任何精度的定点数。
Java中的数组
当建立一个数组对象时,实际上就是建立了一个引用数组,而且每一个引用都会自动被初始化为一个特定值,该值拥有本身的关键字null。在使用任何引用前,必须为其指定一个对象。存放基本数据类型的数组默认值为零。
若是字段是对某个对象的引用,那么必须初始化该引用,以便使其与一个实际对象相关联。
基本数据类型默认值
基本类型 |
默认值 |
boolean |
false |
char |
'\u0000'(null) |
byte |
(byte)0 |
short |
s(hort)0 |
int |
0 |
long |
0L |
float |
0.0f |
double |
0.0d |
静态变量、静态初始化快、变量、初始化快、构造器,它们的初始化顺序是
(静态方法、静态 初始化快)>(变量、初始化块)>构造器