溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

構造方法與析構方法區別

發布時間:2020-09-16 09:01:13 來源:網絡 閱讀:726 作者:shenshizhong 欄目:開發技術

Java構造方法

類有一個特殊的成員方法叫作構造方法,它的作用是創建對象并初始化成員變量。在創建對象時,會自動調用類的構造方法。
構造方法定義規則:Java 中的構造方法必須與該類具有相同的名字,并且沒有方法的返回類型(包括沒有void)。另外,構造方法一般都應用 public 類型來說明,這樣才能在程序任意的位置創建類的實例也就是對象。
示例:下面是一個 Rectangle 類的構造方法,一個是帶有兩個參數,分別表示矩形的長和寬;

另一個是不帶參數:
public class Rectangle {
    public Rectangle(int w, int h) {
        width = w;
        height = h;
    }
    public Rectangle() {}
}

那么創建實例,我們有兩種方式:一個是Rectangle rectangle=new Rectangle (20,20);另一個是Rectanglerectangle=new Rectangle ();都能創建實例,兩個唯一不同:是否初始化變量

注意點:1、每個類至少有一個構造方法。如果不寫一個構造方法,Java 編程語言將提供一個默認的,該構造方法沒有參數,而且方法體為空。如果一個類中已經定義了構造方法則系統不再提供默認的構造方法。2、盡量不在類的構造器中創建、初始化大量的對象或執行某種復雜、耗時的運算邏輯。

 

Java析構方法

當垃圾回收器將要釋放無用對象的內存時,先調用該對象的finalize()方法。如果在程序終止前垃圾回收器始終沒有執行垃圾回收操作,那么垃圾回收器將始終不會調用無用對象的finalize()方法。在JavaObject基類中提供了protected類型的finalize()方法,因此任何Java類都可以覆蓋finalize()方法,通常,在析構方法中進行釋放對象占用的相關資源的操作。

Java 虛擬機的垃圾回收操作對程序完全是透明的,因此程序無法預料某個無用對象的finalize()方法何時被調用。如果一個程序只占用少量內存,沒有造成嚴重的內存需求,垃圾回收器可能沒有釋放那些無用對象占用的內存,因此這些對象的finalize()方法還沒有被調用,程序就終止了。也就是無用對象沒被回收。

程序即使顯式調用System.gc()Runtime.gc()方法,也不能保證垃圾回收操作一定執行,也就不能保證對象的finalize()方法一定被調用。

當垃圾回收器在執行finalize()方法的時候,如果出現了異常,垃圾回收器不會報告異常,程序繼續正常運行。
@Override
protected void finalize(){
    System.out.println("in finalize");
}
Java 編程里面,一般不需要我們去寫析構方法,這里只是了解一下就可以了。

總結:

簡單理解,構造方法是創建對象,析構方法是銷毀對象


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女