您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)Java中final、static、this、super關(guān)鍵字如何使用,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
final 關(guān)鍵字
final關(guān)鍵字主要用在三個(gè)地方:變量、方法、類(lèi)。
對(duì)于一個(gè)final變量,如果是基本數(shù)據(jù)類(lèi)型的變量,則其數(shù)值一旦在初始化之后便不能更改;如果是引用類(lèi)型的變量,則在對(duì)其初始化之后便不能再讓其指向另一個(gè)對(duì)象。
當(dāng)用final修飾一個(gè)類(lèi)時(shí),表明這個(gè)類(lèi)不能被繼承。final類(lèi)中的所有成員方法都會(huì)被隱式地指定為final方法。
使用final方法的原因有兩個(gè)。第一個(gè)原因是把方法鎖定,以防任何繼承類(lèi)修改它的含義;第二個(gè)原因是效率。在早期的Java實(shí)現(xiàn)版本中,會(huì)將final方法轉(zhuǎn)為內(nèi)嵌調(diào)用。但是如果方法過(guò)于龐大,可能看不到內(nèi)嵌調(diào)用帶來(lái)的任何性能提升(現(xiàn)在的Java版本已經(jīng)不需要使用final方法進(jìn)行這些優(yōu)化了)。類(lèi)中所有的private方法都隱式地指定為final。
static 關(guān)鍵字
static 關(guān)鍵字主要有以下四種使用場(chǎng)景:
修飾成員變量和成員方法: 被 static 修飾的成員屬于類(lèi),不屬于單個(gè)這個(gè)類(lèi)的某個(gè)對(duì)象,被類(lèi)中所有對(duì)象共享,可以并且建議通過(guò)類(lèi)名調(diào)用。被static 聲明的成員變量屬于靜態(tài)成員變量,靜態(tài)變量 存放在 Java 內(nèi)存區(qū)域的方法區(qū)。調(diào)用格式:類(lèi)名.靜態(tài)變量名 類(lèi)名.靜態(tài)方法名()
靜態(tài)代碼塊: 靜態(tài)代碼塊定義在類(lèi)中方法外, 靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—>非靜態(tài)代碼塊—>構(gòu)造方法)。 該類(lèi)不管創(chuàng)建多少對(duì)象,靜態(tài)代碼塊只執(zhí)行一次.
靜態(tài)內(nèi)部類(lèi)(static修飾類(lèi)的話只能修飾內(nèi)部類(lèi)): 靜態(tài)內(nèi)部類(lèi)與非靜態(tài)內(nèi)部類(lèi)之間存在一個(gè)最大的區(qū)別: 非靜態(tài)內(nèi)部類(lèi)在編譯完成之后會(huì)隱含地保存著一個(gè)引用,該引用是指向創(chuàng)建它的外圍類(lèi),但是靜態(tài)內(nèi)部類(lèi)卻沒(méi)有。沒(méi)有這個(gè)引用就意味著:1. 它的創(chuàng)建是不需要依賴外圍類(lèi)的創(chuàng)建。2. 它不能使用任何外圍類(lèi)的非static成員變量和方法。
靜態(tài)導(dǎo)包(用來(lái)導(dǎo)入類(lèi)中的靜態(tài)資源,1.5之后的新特性): 格式為:import static 這兩個(gè)關(guān)鍵字連用可以指定導(dǎo)入某個(gè)類(lèi)中的指定靜態(tài)資源,并且不需要使用類(lèi)名調(diào)用類(lèi)中靜態(tài)成員,可以直接使用類(lèi)中靜態(tài)成員變量和成員方法。
this 關(guān)鍵字
this關(guān)鍵字用于引用類(lèi)的當(dāng)前實(shí)例。 例如:
class Manager {
Employees[] employees;
void manageEmployees() {
int totalEmp = this.employees.length;
System.out.println("Total employees: " + totalEmp);
this.report();
}
void report() { }
}
在上面的示例中,this關(guān)鍵字用于兩個(gè)地方:
this.employees.length:訪問(wèn)類(lèi)Manager的當(dāng)前實(shí)例的變量。
this.report():調(diào)用類(lèi)Manager的當(dāng)前實(shí)例的方法。
此關(guān)鍵字是可選的,這意味著如果上面的示例在不使用此關(guān)鍵字的情況下表現(xiàn)相同。 但是,使用此關(guān)鍵字可能會(huì)使代碼更易讀或易懂。
super 關(guān)鍵字
super關(guān)鍵字用于從子類(lèi)訪問(wèn)父類(lèi)的變量和方法。 例如:
public class Super {
protected int number;
protected showNumber() {
System.out.println("number = " + number);
}
}
public class Sub extends Super {
void bar() {
super.number = 10;
super.showNumber();
}
}
在上面的例子中,Sub 類(lèi)訪問(wèn)父類(lèi)成員變量 number 并調(diào)用其其父類(lèi) Super 的 showNumber() 方法。
使用 this 和 super 要注意的問(wèn)題:
在構(gòu)造器中使用 super() 調(diào)用父類(lèi)中的其他構(gòu)造方法時(shí),該語(yǔ)句必須處于構(gòu)造器的首行,否則編譯器會(huì)報(bào)錯(cuò)。另外,this 調(diào)用本類(lèi)中的其他構(gòu)造方法時(shí),也要放在首行。
this、super不能用在static方法中。
以上就是Java中final、static、this、super關(guān)鍵字如何使用,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。