一,Java中的变量在内存中的分配
1.类变量(static):在程序加载时系统就为他在堆中开辟了内存,堆中的内存地址存放在栈中,以便于高速访问。
2.实例变量:当使用new时,使用堆中开辟相应的内存空间。当实例变量的引用丢失后,将被GC列入可回收名单。
3.局部变量:当执行到他的时候,在栈中开辟内存,当局不变量一旦脱离工作域,内存立即释放。
二,堆内存用来存放由new创建的对象和数组,有GC来管理,然后在栈中定义一些特殊的变量,让栈中的这个变量的取值等于数组或者对象在堆中的首地址,栈中的这个变量就成了数组或对象的引用变量。
三,总结:基本数据类型,局部变量都是存放在栈内存当中,用完就消失,没有默认初始值。
new创建的实例化对象及数组,是放在堆内存中,用完之后靠GC不定期自动消除。
堆内存中所有实体都有内存地址值,有默认初始值;实体不再指向时,GC自动消除。
局部变量:存储在栈中,必须显示的赋值;
成员变量:存储在堆中,有默认初始值。