java的堆、栈、构造器和垃圾收集器

1.所有的对象都存在于可垃圾回收的堆上。方法调用和局部变量存在于栈中。

2.所有局部变量都存在于栈上相对应的堆栈块中。。实例变量保存在所属的对象中,位于堆上,如果实例变量是个对对象的引用,则引用与对象都是在堆上。

3.对象引用变量与primitive主数据类型变量都放在栈上。(2.3两条有点疑问,不大明白)

4.不管是实例变量还是局部变量,对象本身都会在堆上。

5.构造函数的一项关键特征是它会在对象能够被赋值之前给引用之前就调用。也就让你有机会介入new的过程。即构造函数会在新建对象的时候执行程序代码。可以用构造函数初始创建对象的特征。

6.构造函数可以是共有、私有或不指定的,私有不是完全不能存取,它代表该类之外不能存取。

7.调用父类构造函数的唯一方法是调用super();

8.使用this()来从某个构造函数调用同一个类的另外一个构造函数。this()只能在构造函数中,且必须是第一行语句。super()和this()不能兼得。

9.局部变量只会存活在声明该变量的方法中。实例变量的寿命与对象相同。如果对象还活着,则实例变量也会是活着的。引用变量在下列三种情况下会被回收:

<1>引用永久性的离开它的范围

void go(){

Life a=new Life();
}

//a会在方法结束时消失

<2>引用被赋值到别处时挂掉

Life a=new Life();

a=new Life();

<3>直接将引用赋值为null.

Life a=new Life();

a=null;



你可能感兴趣的:(java的堆、栈、构造器和垃圾收集器)