java中的常見關(guān)鍵字解析
本文主要針對(duì)Java常見關(guān)鍵字final,static,super,this進(jìn)行詳細(xì)辨析,以方便讀者參考查閱。具體如下:
一、final
1)修飾class(類):
表示此類不可被繼承了
2)修飾method(方法)
表示此方法方法不可被重寫(@override)了
3)修飾variable(變量)
表示此變量的值之后不可被改變了,常用于修飾不可變的常量
注:final字面意思是“最后”、“不可更改”的意思,結(jié)合意思記憶更方便。
二、static(第二、三法常用)
1)修飾class(類):
(不常用)只可用于修飾內(nèi)部類,普通類不允許這么聲明
2)修飾method(方法)
static方法是屬于類所有(對(duì)象間共享),而不是某個(gè)對(duì)象。不需創(chuàng)建對(duì)象,可以使用類名進(jìn)行調(diào)用此方法。
(程序執(zhí)行時(shí),類的字節(jié)碼被加載到內(nèi)存中,類沒有創(chuàng)建對(duì)象時(shí),類變量已經(jīng)被分配內(nèi)存,實(shí)例變量在創(chuàng)建具體對(duì)象時(shí)才分配內(nèi)存空間。)
3)修飾variable(變量)
類似于2),變量是類級(jí)別的共享,不需創(chuàng)建對(duì)象,但是變量的值的變化是整體性的,也就是說,對(duì)象A對(duì)某static變量的值進(jìn)行操作而改變了,那么對(duì)象B操作的就是改變后的static變量。
注:使用static修飾的代碼塊叫做靜態(tài)代碼塊,靜態(tài)代碼塊在JVM加載類的時(shí)候就先被執(zhí)行了,無論它們被放在什么位置,它們都是先被執(zhí)行,然后才是正常的代碼塊被執(zhí)行??梢杂卸鄠€(gè)靜態(tài)代碼塊,它們會(huì)依次被JVM按照出現(xiàn)順序執(zhí)行,每個(gè)代碼塊只會(huì)被執(zhí)行一次。
靜態(tài)方法中不能有this和super關(guān)鍵字出現(xiàn)。
三、super:(指對(duì)父類的引用)
1)與Class相關(guān)(父類,也稱超類):
通過super(參數(shù)1,參數(shù)2,……,參數(shù)n),調(diào)用父類構(gòu)造函數(shù);
2)與Method(方法)相關(guān)
super.Methord(參數(shù)1,參數(shù)2,……,參數(shù)n)調(diào)用父類被重寫的方法;
3)與variable(變量)相關(guān)
super.variable,調(diào)用父類的變量
注:super必須用在子類構(gòu)造方法的第一行;
當(dāng)父類沒有不帶參數(shù)的構(gòu)造方法時(shí),子類需要使用super來顯式地調(diào)用父類的構(gòu)造方法,super指的是對(duì)父類的引用
四、this:(對(duì)當(dāng)前對(duì)象的引用)
1)Class相關(guān):
this(參數(shù)1,參數(shù)2,……,參數(shù)n),這是普通的構(gòu)造函數(shù),只能是構(gòu)造函數(shù)(其他)調(diào)用構(gòu)造函數(shù)(this),普通函數(shù)無法調(diào)用構(gòu)造函數(shù)。
2)Method(方法)相關(guān):
調(diào)用當(dāng)前對(duì)象的方法
3)Variable(變量)相關(guān):
調(diào)用當(dāng)前對(duì)象的變量
注:this();和super();顯式的調(diào)用構(gòu)造函數(shù)只能放在構(gòu)造第一行;
this.method..();super.method..();可以放在任何地方當(dāng)作一個(gè)普通的方法使;
構(gòu)造器和方法使用關(guān)鍵字this有很大的區(qū)別。方法引用this指向正在執(zhí)行方法的類的實(shí)例。靜態(tài)方法不能使用this關(guān)鍵字,因?yàn)殪o態(tài)方法不屬于類的實(shí)例,所以this也就沒有什么東西去指向。構(gòu)造器的this指向同一個(gè)類中,不同參數(shù)列表的另外一個(gè)構(gòu)造器。
相關(guān)文章
springboot?實(shí)現(xiàn)動(dòng)態(tài)刷新配置的詳細(xì)過程
這篇文章主要介紹了springboot實(shí)現(xiàn)動(dòng)態(tài)刷新配置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Java創(chuàng)建數(shù)組的幾種方式總結(jié)
下面小編就為大家?guī)硪黄狫ava創(chuàng)建數(shù)組的幾種方式總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
SpringBoot任務(wù)調(diào)度器的實(shí)現(xiàn)代碼
SpringBoot自帶了任務(wù)調(diào)度器,通過注解的方式使用。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12
java優(yōu)先隊(duì)列PriorityQueue中Comparator的用法詳解
這篇文章主要介紹了java優(yōu)先隊(duì)列PriorityQueue中Comparator的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
如何讓Jackson JSON生成的數(shù)據(jù)包含的中文以u(píng)nicode方式編碼
這篇文章主要介紹了如何讓Jackson JSON生成的數(shù)據(jù)包含的中文以u(píng)nicode方式編碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
淺談@mapper引入不到引入的是@MapperScan的問題
這篇文章主要介紹了淺談@mapper引入不到引入的是@MapperScan的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10

