存放数据的地方:
1.寄存器(Registers):位于处理器内部,速度最快,程序员无法直接操纵.
2.栈(Stack):位于一般的RAM当中,处理器由指针提供支持.因为要移动指针,所以存放在stack中的数据的实际大小和存活时间都是明确的.reference可以置入其中,但是java对象不可以.
3.堆(Heap):位于RAM当中,放置所有的java对象.new的对象都是自Heap分配空间的.
4.静态存储空间(Static storage):static可以将某个对象内的特定成员置为静态.java对象不可能置入此地.
5.常量存储空间(Constant storage):位于ROM中.
6.Non-RAM存储空间:streamed objects和persistent objects.
两种型别
1.对象型别:object type
2.基本型别:primitive type 不以new分配空间,而是一种automatic变量直接存放数据值,置于stack
如果想在heap内代替基本型别,可以适用外覆类.比如Character(char)
类的初始化过程
1.当一个对象首次生成,或者当类的static函数和static对象首次被访问,java inter Preter首先根据classpath环境变量来查找该对象.
2.一旦类被装载,就执行它的static初始动作,因此static初始化动作仅发生一次,就是在Class对象首次被装载时.
3.当new Class(),则先为class对象在Heap上分配足够的存储空间.
4.该存储空间先被清空.并自动将class对象内部所有隶属基本类型的数据设为缺省值,并将reference置为null
5.执行所有出现于数据定义处的初始化动作
6.执行构造函数