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