摘要:析構函數對象也有類似析構函數的功能,如果想要在垃圾回收的時候對某個對象進行一些收尾工作,可以重寫類的方法。示例對象構造函數對象析構函數會產生垃圾手工處理垃圾收集輸出結果對象構造函數對象析構函數可以看到異常信息并未輸出。
關于類和對象的詳解可以參考:https://blog.csdn.net/wei_zhi...
本文主要記錄下類對象的初始化順序、finalize函數以及對象克隆。
類對象初始化順序父類靜態屬性變量初始化
父類靜態代碼塊
子類靜態屬性變量初始化
子類靜態代碼塊
父類普通屬性變量初始化
父類構造代碼塊
父類構造函數
子類普通屬性變量初始化
子類構造代碼塊
子類構造函數
通過結論我們可以很明顯的看出:static字段、代碼塊的執行順序優先于非static字段、代碼塊。這是因為在靜態域是屬于類的,在類加載后就一直存在;而普通域需要創建對象才能訪問。而在創建對象時,需要先加載父類,然后再加載子類,因此父類的靜態字段初始化和靜態代碼塊執行先于子類。
finalize 析構函數java對象也有類似析構函數的功能,如果想要在垃圾回收的時候對某個對象進行一些收尾工作,可以重寫Object類的finalize()方法。
定義如下:
protected void finalize() throws Throwable
在對象回收時,即使拋出了異常,也不會影響程序的正常運行。
示例:
class Demo { public Demo(){ System.out.println("對象構造函數"); } @Override protected void finalize() throws Throwable{ System.out.println("對象析構函數"); } } public class testDemo { public static void main(String[] args) throws Exception { Demo demo = new Demo(); demo = null; //會產生垃圾 System.gc(); //手工處理垃圾收集 } } 輸出結果: 對象構造函數 對象析構函數
可以看到異常信息并未輸出。
final、finally、finalize的區別final:關鍵字,其修飾的類不能被繼承,方法不能被重寫、常量;
finally: 關鍵字,異常的統一出口;
finalize:Object類的方法,析構函數;
對象克隆對象克隆指的是對象的復制操作,在Object類里提供有一個專門的克隆方法:
protected Object clone() throws CloneNotSupportedException
如果要使用的對象不支持Cloneable接口,調用該方法就會拋出異常。
示例:
class Book implements Cloneable { //此類的對象可以被克隆 private String title; private double price; public Book(String title, double price){ this.title = title; this.price = price; } @Override public String toString(){ return "書名:" + this.title + "價格:" + this.price; } //由于此類需要對象克隆操作,需要進行對象方法的重寫 @Override public Object clone() throws CloneNotSupportedException{ return super.clone(); } } public class testDemo { public static void main(String[] args) throws Exception { Book bookA = new Book("java開發", 79.8); Book bookB = (Book)bookA.clone(); System.out.println(bookA); System.out.println(bookB); System.out.println(System.identityHashCode(bookA)); System.out.println(System.identityHashCode(bookB)); } } 輸出結果: 書名:java開發價格:79.8 書名:java開發價格:79.8 ***** 366712642 1829164700
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73443.html
摘要:中類的概念及類與對象的關系什么是類從語義上理解,類就是用于創建對象的模版,是一個抽象的概念從語法上理解,類就是我們指定的一種數據類型類和對象的關系語義上,類是創建對象的模版,對象是類的實例語法上,類是自定義數據類型,對象是這種類型的變量創建 1、Java中類的概念及類與對象的關系 什么是類? 從語義上理解,類就是用于創建對象的模版,是一個抽象的概念;從語法上理解,類就是我們指定的一...
摘要:目錄介紹問題匯總具體問題好消息博客筆記大匯總年月到至今,包括基礎及深入知識點,技術博客,學習筆記等等,還包括平時開發中遇到的匯總,當然也在工作之余收集了大量的面試題,長期更新維護并且修正,持續完善開源的文件是格式的同時也開源了生活博客,從年 目錄介紹 00.Java問題匯總 01.具體問題 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎及深入知識點,Android技...
摘要:又是金三銀四的時候,我希望這份面試題能夠祝你一臂之力自我和項目相關自我介紹你覺得自己的優點是你覺得自己有啥缺點你有哪些你為什么要離開上家公司你上家公司在,我們公司在,離這么遠為什么要選擇我們這里上家公司的同事和領導是怎么評價你的介紹下你的上 又是金三銀四的時候,我希望這份面試題能夠祝你一臂之力! 自我和項目相關 1、自我介紹 2、你覺得自己的優點是?你覺得自己有啥缺點? 3、你有哪些 ...
摘要:抽象工廠模式是為了處理對象具有等級結構以及對象族的問題。單例設計模式單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,這個類成為單例類。 導語:設計模式是無數碼農前人在實際的生產項目中經過不斷的踩坑、爬坑、修坑的經歷總結出來的經驗教訓,經過抽象之后表達成的概念。能夠幫助后來的設計者避免重復同樣的錯誤或者彎路。我也抽空整理了一下設計模式,用自己的話總結了一下,自認...
摘要:文件組織一個文件由應以空行分隔的部分和標識每個部分的可選注釋組成。一個文件超過行的代碼會顯得很麻煩,應該避免出現這樣情況。源代碼文件每個源文件包含一個單獨的公開類或者接口。構造函數方法這些方法應該按照功能而不是范圍或可訪問性進行分組。 3-文件組織 一個文件由應以空行分隔的部分和標識每個部分的可選注釋組成。 一個文件超過2000行的代碼會顯得很麻煩,應該避免出現這樣情況。 3.1 ja...
閱讀 1618·2019-08-29 13:53
閱讀 3216·2019-08-29 13:50
閱讀 860·2019-08-27 10:51
閱讀 571·2019-08-26 18:36
閱讀 1814·2019-08-26 11:00
閱讀 610·2019-08-26 10:36
閱讀 3223·2019-08-23 17:58
閱讀 2037·2019-08-23 15:17