Java中的幾種關(guān)鍵字的使用小結(jié)
Java中的this關(guān)鍵字
Java 中的 this 關(guān)鍵字是一個引用類型變量,用于表示當(dāng)前對象的引用。當(dāng)方法中需要調(diào)用當(dāng)前對象的成員變量或成員方法時,可以使用 this 關(guān)鍵字。
在 Java 類中,實例變量和局部變量可能會有相同的名稱,因此使用 this 關(guān)鍵字可以區(qū)分它們。當(dāng)代碼中出現(xiàn) this 關(guān)鍵字時,編譯器會優(yōu)先解析為實例變量,如果實例中不存在該變量,則解析為局部變量。
除了用于區(qū)分變量之外,this 關(guān)鍵字還可以用于以下幾個方面:
- 在構(gòu)造函數(shù)中調(diào)用其他的構(gòu)造函數(shù):
在類中定義多個構(gòu)造函數(shù)時,可以使用 this 關(guān)鍵字來調(diào)用同一類中的其他構(gòu)造函數(shù),以達(dá)到代碼重用的目的。如果在一個構(gòu)造函數(shù)中調(diào)用另一個構(gòu)造函數(shù),必須將 this() 作為構(gòu)造函數(shù)的第一條語句使用。 - 返回當(dāng)前對象
在某些情況下,需要返回當(dāng)前對象,可以使用 this 關(guān)鍵字來實現(xiàn)。例如,在鏈?zhǔn)骄幊讨?,每個方法調(diào)用都需要返回當(dāng)前對象,這樣可以使代碼更加簡潔明了。 - 傳遞當(dāng)前對象給其他方法或構(gòu)造函數(shù)
在調(diào)用其他方法或構(gòu)造函數(shù)時,可以將當(dāng)前對象作為參數(shù)傳遞給它們,以便其他方法或構(gòu)造函數(shù)能夠訪問和操作當(dāng)前對象。
Java中的super關(guān)鍵字
super 關(guān)鍵字用于訪問父類中的成員變量、成員方法和構(gòu)造方法,在子類中使用 super 關(guān)鍵字可以引用父類的成員。super 有以下幾種用法:
訪問父類的成員變量
public class Parent { ? ? public int x = 10; } public class Child extends Parent { ? ? public int x = 20; ? ? public void print() { ? ? ? ? System.out.println("Child x: " + x); ? ? ? ? System.out.println("Parent x: " + super.x); ? ? } } public static void main(String[] args) { ? ? Child child = new Child(); ? ? child.print(); }
在上面的代碼中,Child 類繼承了 Parent 類,并聲明了一個同名的 x 變量。通過 super.x 可以訪問父類中的 x 值。
訪問父類的成員方法
public class Parent { ? ? public void hello() { ? ? ? ? System.out.println("Hello from parent"); ? ? } } public class Child extends Parent { ? ? public void hello() { ? ? ? ? super.hello(); ? ? ? ? System.out.println("Hello from child"); ? ? } } public static void main(String[] args) { ? ? Child child = new Child(); ? ? child.hello(); }
在上面的代碼中,Child 類重寫了 Parent 類的 hello() 方法,使用 super.hello() 調(diào)用了父類中的方法并在子類中添加了自己的實現(xiàn)。
調(diào)用父類的構(gòu)造方法
public class Parent { ? ? public Parent(int x) { ? ? ? ? System.out.println("Parent constructor with x = " + x); ? ? } } public class Child extends Parent { ? ? public Child() { ? ? ? ? super(10); ? ? } } public static void main(String[] args) { ? ? Child child = new Child(); }
在上面的代碼中,Child 類調(diào)用了父類中的有參構(gòu)造函數(shù),使用 super(10) 可以傳遞參數(shù)給父類的構(gòu)造方法。
需要注意的是,super 關(guān)鍵字必須放在子類構(gòu)造方法的第一行,而且只能使用一次。同時,如果子類沒有顯式地調(diào)用父類的構(gòu)造函數(shù),Java 編譯器會隱式地插入一個父類默認(rèn)構(gòu)造函數(shù)的調(diào)用語句。
Java中的static關(guān)鍵字
在Java中,static關(guān)鍵字可以用來修飾類的成員變量、方法和代碼塊。當(dāng)用Static修飾類的成員時,它代表這個成員屬于整個類,而不是某個對象實例。換句話說,無論創(chuàng)建多少個對象,靜態(tài)成員只會被創(chuàng)建一次并共享。
下面我們來詳細(xì)介紹Java中static關(guān)鍵字的幾種用法:
靜態(tài)變量
被static修飾的成員變量稱為靜態(tài)變量或者類變量。靜態(tài)變量存儲在靜態(tài)存儲區(qū),不屬于任何一個對象,僅在程序執(zhí)行期間存在一份內(nèi)存。除非顯式地對它賦值,否則它默認(rèn)被初始化為0或null。
public class Example { static int age; public static void main(String[] args){ System.out.println(age); //輸出0 } }
靜態(tài)方法
被static修飾的方法稱為靜態(tài)方法或類方法。它們被設(shè)計成僅與類本身有關(guān)聯(lián)。靜態(tài)方法中不能使用this和super關(guān)鍵字,因為它們都與具體的對象相關(guān)。既然靜態(tài)方法不依賴于對象,所以它可以在沒有任何實例的情況下被調(diào)用。
public class Example { public static void show(){ System.out.println("This is a static method"); } public static void main(String[] args){ Example.show(); //無需實例化就可以調(diào)用Static方法 } }
靜態(tài)代碼塊
靜態(tài)代碼塊稱為類初始化塊,在類被加載時自動執(zhí)行。它們僅能訪問靜態(tài)成員并支持使用static關(guān)鍵字來聲明變量和方法。
public class Example { static{ System.out.println("This is a Static Block"); } public static void main(String[] args){ System.out.println("Main method Executed.."); } }
上面是Java中對Static關(guān)鍵字的三種常見應(yīng)用,但是我們在使用的過程中還需要注意以下幾點:
- 靜態(tài)方法只能訪問到類變量和其他靜態(tài)方法。
- 非靜態(tài)方法可以訪問到類變量,非靜態(tài)變量,其他非靜態(tài)方法和靜態(tài)變量/方法。
- Static方法不能以任何方式引用當(dāng)前對象的實例。 不能在靜態(tài)方法內(nèi)部使用this關(guān)鍵字,或者向它傳遞任何參數(shù)。
Java中的final關(guān)鍵字
在Java中,final關(guān)鍵字可以用來修飾類、方法以及變量。它表示其修飾的內(nèi)容不可改變,對于類、方法和變量分別有不同的含義:
1.final修飾類
被final修飾的類不能被繼承,即該類不允許有子類。通常情況下使用final類是為了防止子類修改父類的行為,從而確保類的安全性和一致性。例如,在Java Collection Framework中的很多類都被聲明為final。
final class Example { //.... }
2.final修飾方法
被final修飾的方法不能被子類重寫,也就是說,該方法已經(jīng)是最終實現(xiàn)。與final類一樣,這種行為也能夠有效保護(hù)代碼的完整性和安全性。但需要注意的是,final方法并不一定要有方法體,因為它們可能只是一些接口規(guī)范。
class Example { public final void show(){ System.out.println("This method is final and can't be overriden"); } }
3.final變量
被final修飾的變量稱為常量,其賦值后不能再被修改。常量可以在運行時初始化,也可以在編譯時通過直接賦值或構(gòu)造函數(shù)進(jìn)行初始化。Java開發(fā)人員通常將常量用于在程序中使用固定的數(shù)值或字符串。傳統(tǒng)上我們推薦使用大寫字母來表示常量。
final int AGE = 20; final String NAME = "Xiaowei";
我們需要注意,當(dāng)final變量引用一個對象時,只是意味著該變量不能在執(zhí)行期間重新指向另一個對象,而并不阻止對象本身的狀態(tài)被修改。
到此這篇關(guān)于Java中的幾種關(guān)鍵字的使用小結(jié)的文章就介紹到這了,更多相關(guān)Java 關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成RocketMQ實現(xiàn)消息發(fā)送的三種方式
RocketMQ?支持3?種消息發(fā)送方式:?同步?(sync)、異步(async)、單向(oneway),本文就將給大家介紹一下SpringBoot集成RocketMQ實現(xiàn)消息發(fā)送的三種方式文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-09-09淺談@FeignClient中name和value屬性的區(qū)別
這篇文章主要介紹了@FeignClient中name和value屬性的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Java的volatile和sychronized底層實現(xiàn)原理解析
文章詳細(xì)介紹了Java中的synchronized和volatile關(guān)鍵字的底層實現(xiàn)原理,包括字節(jié)碼層面、JVM層面的實現(xiàn)細(xì)節(jié),以及鎖的類型和MESI協(xié)議在多核處理器中的作用,文章還探討了synchronized和volatile的區(qū)別,以及如何通過Atomic類來實現(xiàn)更細(xì)粒度的原子操作,感興趣的朋友一起看看吧2025-03-03SpringBoot 整合 Lettuce Redis的實現(xiàn)方法
這篇文章主要介紹了SpringBoot 整合 Lettuce Redis的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07apollo更改配置刷新@ConfigurationProperties配置類
這篇文章主要為大家介紹了apollo更改配置刷新@ConfigurationProperties配置類示例解析,apollo更改配置刷新@ConfigurationProperties配置類2023-04-04關(guān)于注解FeignClient的使用規(guī)范
這篇文章主要介紹了關(guān)于注解FeignClient的使用規(guī)范,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03