java的堆、棧、構造器和垃圾收集器

1.全部的對象都存在於可垃圾回收的堆上。方法調用和局部變量存在於棧中。函數

2.全部局部變量都存在於棧上相對應的堆棧塊中。。實例變量保存在所屬的對象中,位於堆上,若是實例變量是個對對象的引用,則引用與對象都是在堆上。this

3.對象引用變量與primitive主數據類型變量都放在棧上。(2.3兩條有點疑問,不大明白)對象

4.無論是實例變量仍是局部變量,對象自己都會在堆上。it

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;

相關文章
相關標籤/搜索