static關(guān)鍵字

static關(guān)鍵字
2.1 static概念
當(dāng)在定義類的時(shí)候,類中都會(huì)有相應(yīng)的屬性和方法。而屬性和方法都是通過(guò)創(chuàng)建本類對(duì)象調(diào)用的。當(dāng)在調(diào)用對(duì)象的某個(gè)方法時(shí),這個(gè)方法沒(méi)有訪問(wèn)到對(duì)象的特有數(shù)據(jù)時(shí),方法創(chuàng)建這個(gè)對(duì)象有些多余。可是不創(chuàng)建對(duì)象,方法又調(diào)用不了,這時(shí)就會(huì)想,那么我們能不能不創(chuàng)建對(duì)象,就可以調(diào)用方法呢?
可以的,我們可以通過(guò)static關(guān)鍵字來(lái)實(shí)現(xiàn)。static它是靜態(tài)修飾符,一般用來(lái)修飾類中的成員。
2.2 static特點(diǎn)
? 被static修飾的成員變量屬于類,不屬于這個(gè)類的某個(gè)對(duì)象。(也就是說(shuō),多個(gè)對(duì)象在訪問(wèn)或修改static修飾的成員變量時(shí),其中一個(gè)對(duì)象將static成員變量值進(jìn)行了修改,其他對(duì)象中的static成員變量值跟著改變,即多個(gè)對(duì)象共享同一個(gè)static成員變量)
代碼演示:
class Demo {
public static int num = 100;
}

class Test {
public static void main(String[] args) {
Demo d1 = new Demo();
Demo d2 = new Demo();
d1.num = 200;
System.out.println(d1.num); //結(jié)果為200
System.out.println(d2.num); //結(jié)果為200
}
}

? 被static修飾的成員可以并且建議通過(guò)類名直接訪問(wèn)。
訪問(wèn)靜態(tài)成員的格式:
類名.靜態(tài)成員變量名
類名.靜態(tài)成員方法名(參數(shù))
對(duì)象名.靜態(tài)成員變量名 ------不建議使用該方式,會(huì)出現(xiàn)警告
對(duì)象名.靜態(tài)成員方法名(參數(shù)) ------不建議使用該方式,會(huì)出現(xiàn)警告
代碼演示:
class Demo {
//靜態(tài)成員變量
public static int num = 100;
//靜態(tài)方法
public static void method(){
System.out.println("靜態(tài)方法");
}
}
class Test {
public static void main(String[] args) {
System.out.println(Demo.num);
Demo.method();
}
}
2.3 static注意事項(xiàng)
? 靜態(tài)內(nèi)容是優(yōu)先于對(duì)象存在,只能訪問(wèn)靜態(tài),不能使用this/super。靜態(tài)修飾的內(nèi)容存于靜態(tài)區(qū)。
class Demo {
//成員變量
public int num = 100;
//靜態(tài)方法
public static void method(){
//this.num; 不能使用this/super。
System.out.println(this.num);
}
}

? 同一個(gè)類中,靜態(tài)成員只能訪問(wèn)靜態(tài)成員
class Demo {
//成員變量
public int num = 100;
//靜態(tài)成員變量
public static int count = 200;
//靜態(tài)方法
public static void method(){
//System.out.println(num); 靜態(tài)方法中,只能訪問(wèn)靜態(tài)成員變量或靜態(tài)成員方法
System.out.println(count);
}
}

? main方法為靜態(tài)方法僅僅為程序執(zhí)行入口,它不屬于任何一個(gè)對(duì)象,可以定義在任意類中。
2.4 定義靜態(tài)常量
開(kāi)發(fā)中,我們想在類中定義一個(gè)靜態(tài)常量,通常使用public static final修飾的變量來(lái)完成定義。此時(shí)變量名用全部大寫,多個(gè)單詞使用下劃線連接。
定義格式:
public static final 數(shù)據(jù)類型 變量名 = 值;
如下演示:
class Company {
public static final String COMPANY_NAME = "傳智播客";
public static void method(){
System.out.println("一個(gè)靜態(tài)方法");
}
}

當(dāng)我們想使用類的靜態(tài)成員時(shí),不需要?jiǎng)?chuàng)建對(duì)象,直接使用類名來(lái)訪問(wèn)即可。
System.out.println(Company.COMPANY_NAME); //打印傳智播客
Company.method(); // 調(diào)用一個(gè)靜態(tài)方法

? 注意:
接口中的每個(gè)成員變量都默認(rèn)使用public static final修飾。
所有接口中的成員變量已是靜態(tài)常量,由于接口沒(méi)有構(gòu)造方法,所以必須顯示賦值??梢灾苯佑媒涌诿L問(wèn)。
interface Inter {
public static final int COUNT = 100;
}
訪問(wèn)接口中的靜態(tài)變量
Inter.COUNT

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容