資料內(nèi)容:
final、finally、finalize區(qū)別
final可以修飾類(lèi)、變量、方法,修飾類(lèi)表示該類(lèi)不能被繼承、修飾方法表示該方法不能被重寫(xiě)、修飾變量表
示該變量是一個(gè)常量不能被重新賦值。
finally一般作用在try-catch代碼塊中,在處理異常的時(shí)候,通常我們將一定要執(zhí)行的代碼方法finally代碼塊
中,表示不管是否出現(xiàn)異常,該代碼塊都會(huì)執(zhí)行,一般用來(lái)存放一些關(guān)閉資源的代碼。
finalize是一個(gè)方法,屬于Object類(lèi)的一個(gè)方法,而Object類(lèi)是所有類(lèi)的父類(lèi),該方法一般由垃圾回收器來(lái)調(diào)
用,當(dāng)我們調(diào)用System.gc() 方法的時(shí)候,由垃圾回收器調(diào)用finalize(),回收垃圾,一個(gè)對(duì)象是否可回收的
最后判斷。
this關(guān)鍵字的用法
this是自身的一個(gè)對(duì)象,代表對(duì)象本身,可以理解為:指向?qū)ο蟊旧淼囊粋€(gè)指針。
this的用法在java中大體可以分為3種:
普通的直接引用,this相當(dāng)于是指向當(dāng)前對(duì)象本身。
形參與成員名字重名,用this來(lái)區(qū)分。
引用本類(lèi)的構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語(yǔ)句 )。
super關(guān)鍵字的用法
super可以理解為是指向自己超(父)類(lèi)對(duì)象的一個(gè)指針,而這個(gè)超類(lèi)指的是離自己最近的一個(gè)父類(lèi)。
super也有三種用法:
1.普通的直接引用,與this類(lèi)似,super相當(dāng)于是指向當(dāng)前對(duì)象的父類(lèi)的引用,這樣就可以用super.xxx來(lái)引
用父類(lèi)的成員。
2.子類(lèi)中的成員變量或方法與父類(lèi)中的成員變量或方法同名時(shí),用super進(jìn)行區(qū)分。
3.引用父類(lèi)構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語(yǔ)句 )。
this與super的區(qū)別
super: 它引用當(dāng)前對(duì)象的直接父類(lèi)中的成員(用來(lái)訪問(wèn)直接父類(lèi)中被隱藏的父類(lèi)中成員數(shù)據(jù)或函數(shù),
基類(lèi)與派生類(lèi)中有相同成員定義時(shí)如:super.變量名 super.成員函數(shù)據(jù)名(實(shí)參)
this:它代表當(dāng)前對(duì)象名(在程序中易產(chǎn)生二義性之處,應(yīng)使用this來(lái)指明當(dāng)前對(duì)象;如果函數(shù)的形參
與類(lèi)中的成員數(shù)據(jù)同名,這時(shí)需用this來(lái)指明成員變量名)
super()和this()類(lèi)似,區(qū)別是,super()在子類(lèi)中調(diào)用父類(lèi)的構(gòu)造方法,this()在本類(lèi)內(nèi)調(diào)用本類(lèi)的其
它構(gòu)造方法。
super()和this()均需放在構(gòu)造方法內(nèi)第一行。
盡管可以用this調(diào)用一個(gè)構(gòu)造器,但卻不能調(diào)用兩個(gè)。
this和super不能同時(shí)出現(xiàn)在一個(gè)構(gòu)造函數(shù)里面,因?yàn)?/span>this必然會(huì)調(diào)用其它的構(gòu)造函數(shù),其它的構(gòu)造函數(shù)
必然也會(huì)有super語(yǔ)句的存在,所以在同一個(gè)構(gòu)造函數(shù)里面有相同的語(yǔ)句,就失去了語(yǔ)句的意義,編譯
器也不會(huì)通過(guò)。
this()和super()都指的是對(duì)象,所以,均不可以在static環(huán)境中使用。包括:static變量,static方
法,static語(yǔ)句塊。
從本質(zhì)上講,this是一個(gè)指向本對(duì)象的指針, 然而super是一個(gè)Java關(guān)鍵字
static存在的主要意義
static的主要意義是在于創(chuàng)建獨(dú)立于具體對(duì)象的域變量或者方法。以致于即使沒(méi)有創(chuàng)建對(duì)象,也能使用
屬性和調(diào)用方法!
static關(guān)鍵字還有一個(gè)比較關(guān)鍵的作用就是 用來(lái)形成靜態(tài)代碼塊以?xún)?yōu)化程序性能。static塊可以置于類(lèi)中
的任何地方,類(lèi)中可以有多個(gè)static塊。在類(lèi)初次被加載的時(shí)候,會(huì)按照static塊的順序來(lái)執(zhí)行每個(gè)
static塊,并且只會(huì)執(zhí)行一次。
為什么說(shuō)static塊可以用來(lái)優(yōu)化程序性能,是因?yàn)樗奶匦?/span>:只會(huì)在類(lèi)加載的時(shí)候執(zhí)行一次。因此,很多
時(shí)候會(huì)將一些只需要進(jìn)行一次的初始化操作都放在static代碼塊中進(jìn)行。
static的獨(dú)特之處
1、被static修飾的變量或者方法是獨(dú)立于該類(lèi)的任何對(duì)象,也就是說(shuō),這些變量和方法不屬于任何一個(gè)實(shí)例
對(duì)象,而是被類(lèi)的實(shí)例對(duì)象所共享。
2、在該類(lèi)被第一次加載的時(shí)候,就會(huì)去加載被static修飾的部分,而且只在類(lèi)第一次使用時(shí)加載并進(jìn)行初始
化,注意這是第一次用就要初始化,后面根據(jù)需要是可以再次賦值的。
3、static變量值在類(lèi)加載的時(shí)候分配空間,以后創(chuàng)建類(lèi)對(duì)象的時(shí)候不會(huì)重新分配。賦值的話,是可以任意賦
值的!
4、被static修飾的變量或者方法是優(yōu)先于對(duì)象存在的,也就是說(shuō)當(dāng)一個(gè)類(lèi)加載完畢之后,即便沒(méi)有創(chuàng)建對(duì)
象,也可以去訪問(wèn)。