亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      java

      當前位置:中華考試網(wǎng) >> java >> java問答庫 >> 文章內(nèi)容

      Java析構(gòu)方法是什么?

      來源:中華考試網(wǎng)  [2020年11月16日]  【

        析構(gòu)方法與構(gòu)造方法相反,當對象脫離其作用域時(例如對象所在的方法已調(diào)用完畢),系統(tǒng)自動執(zhí)行析構(gòu)方法。析構(gòu)方法往往用來做清理垃圾碎片的工作,例如在建立對象時用 new 開辟了一片內(nèi)存空間,應(yīng)退出前在析構(gòu)方法中將其釋放。

        在 Java 的 Object 類中還提供了一個 protected 類型的 finalize() 方法,因此任何 Java 類都可以覆蓋這個方法,在這個方法中進行釋放對象所占有的相關(guān)資源的操作。

        對象的 finalize() 方法具有如下特點:

        垃圾回收器是否會執(zhí)行該方法以及何時執(zhí)行該方法,都是不確定的。

        finalize() 方法有可能使用對象復活,使對象恢復到可觸及狀態(tài)。

        垃圾回收器在執(zhí)行 finalize() 方法時,如果出現(xiàn)異常,垃圾回收器不會報告異常,程序繼續(xù)正常運行。

        例如:

        protected void finalize() { // 對象的清理工作}

        填寫下面表單即可預約申請免費試聽java課程!害怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可全國推薦就業(yè)!

      預約申請免費聽java課程

      • 地區(qū):
      • 姓名:
      • 手機:

        例 1

        下面通過一個例子來講解析構(gòu)方法的使用。該例子計算從類中實例化對象的個數(shù)。

        1)Counter 類在構(gòu)造方法中增值,在析構(gòu)方法中減值。如下所示為計數(shù)器類 Counter 的代碼:

        public class Counter { private static int count = 0; // 計數(shù)器變量 public Counter() { // 構(gòu)造方法 this.count++; // 創(chuàng)建實例時增加值 } public int getCount() { // 獲取計數(shù)器的值 return this.count; } protected void finalize() { // 析構(gòu)方法 this.count--; // 實例銷毀時減少值 System.out.println("對象銷毀"); }}

        2)創(chuàng)建一個帶 main() 的 TestCounter 類對計數(shù)器進行測試,示例代碼如下:

        public class TestCounter { public static void main(String[] args) { Counter cnt1 = new Counter(); // 建立第一個實例 System.out.println("數(shù)量:"+cnt1.getCount()); // 輸出1 Counter cnt2 = new Counter(); // 建立第二個實例 System.out.println("數(shù)量:"+cnt2.getCount()); // 輸出2 cnt2 = null; // 銷毀實例2 try { System.gc(); // 清理內(nèi)存 Thread.currentThread().sleep(1000); // 延時1000毫秒 System.out.println("數(shù)量:"+cnt1.getCount()); // 輸出1 } catch(InterruptedException e) { e.printStackTrace(); } }}

        執(zhí)行后輸出結(jié)果如下:

        數(shù)量:1

        數(shù)量:2

        對象銷毀

        數(shù)量:1

        技巧:由于 finalize() 方法的不確定性,所以在程序中可以調(diào)用 System.gc() 或者 Runtime.gc() 方法提示垃圾回收器盡快執(zhí)行垃圾回收操作。

      責編:fushihao

      上一篇:什么是Oracle數(shù)據(jù)庫?

      下一篇: 沒有了

      • 會計考試
      • 建筑工程
      • 職業(yè)資格
      • 醫(yī)藥考試
      • 外語考試
      • 學歷考試