Java語(yǔ)言支持的變量類(lèi)型有:
·???????? 類(lèi)變量:獨(dú)立于方法之外的變量腰耙,用 static 修飾。
·???????? 實(shí)例變量:獨(dú)立于方法之外的變量铲球,不過(guò)沒(méi)有 static 修飾挺庞。
·???????? 局部變量:類(lèi)的方法中的變量。
Java 局部變量
·???????? 局部變量聲明在方法稼病、構(gòu)造方法或者語(yǔ)句塊中选侨;
·???????? 局部變量在方法、構(gòu)造方法然走、或者語(yǔ)句塊被執(zhí)行的時(shí)候創(chuàng)建援制,當(dāng)它們執(zhí)行完成后,變量將會(huì)被銷(xiāo)毀芍瑞;
·???????? 訪問(wèn)修飾符不能用于局部變量晨仑;
·???????? 局部變量只在聲明它的方法、構(gòu)造方法或者語(yǔ)句塊中可見(jiàn)拆檬;
·???????? 局部變量是在棧上分配的洪己。
·???????? 局部變量沒(méi)有默認(rèn)值,所以局部變量被聲明后秩仆,必須經(jīng)過(guò)初始化码泛,才可以使用。
實(shí)例變量
·???????? 實(shí)例變量聲明在一個(gè)類(lèi)中澄耍,但在方法噪珊、構(gòu)造方法和語(yǔ)句塊之外;
·???????? 當(dāng)一個(gè)對(duì)象被實(shí)例化之后齐莲,每個(gè)實(shí)例變量的值就跟著確定痢站;
·???????? 實(shí)例變量在對(duì)象創(chuàng)建的時(shí)候創(chuàng)建,在對(duì)象被銷(xiāo)毀的時(shí)候銷(xiāo)毀选酗;
·???????? 實(shí)例變量的值應(yīng)該至少被一個(gè)方法阵难、構(gòu)造方法或者語(yǔ)句塊引用,使得外部能夠通過(guò)這些方式獲取實(shí)例變量信息芒填;
·???????? 實(shí)例變量可以聲明在使用前或者使用后呜叫;
·???????? 訪問(wèn)修飾符可以修飾實(shí)例變量空繁;
·???????? 實(shí)例變量對(duì)于類(lèi)中的方法、構(gòu)造方法或者語(yǔ)句塊是可見(jiàn)的朱庆。一般情況下應(yīng)該把實(shí)例變量設(shè)為私有盛泡。通過(guò)使用訪問(wèn)修飾符可以使實(shí)例變量對(duì)子類(lèi)可見(jiàn);
·???????? 實(shí)例變量具有默認(rèn)值娱颊。數(shù)值型變量的默認(rèn)值是0傲诵,布爾型變量的默認(rèn)值是false,引用類(lèi)型變量的默認(rèn)值是null箱硕。變量的值可以在聲明時(shí)指定拴竹,也可以在構(gòu)造方法中指定;
·???????? 實(shí)例變量可以直接通過(guò)變量名訪問(wèn)剧罩。但在靜態(tài)方法以及其他類(lèi)中栓拜,就應(yīng)該使用完全限定名:ObejectReference.VariableName
類(lèi)變量(靜態(tài)變量)
·???????? 類(lèi)變量也稱(chēng)為靜態(tài)變量,在類(lèi)中以static關(guān)鍵字聲明斑响,但必須在方法構(gòu)造方法和語(yǔ)句塊之外菱属。
·???????? 無(wú)論一個(gè)類(lèi)創(chuàng)建了多少個(gè)對(duì)象,類(lèi)只擁有類(lèi)變量的一份拷貝舰罚。
·???????? 靜態(tài)變量除了被聲明為常量外很少使用纽门。常量是指聲明為public/private,final和static類(lèi)型的變量营罢。常量初始化后不可改變赏陵。
·???????? 靜態(tài)變量?jī)?chǔ)存在靜態(tài)存儲(chǔ)區(qū)。經(jīng)常被聲明為常量饲漾,很少單獨(dú)使用static聲明變量蝙搔。
·???????? 靜態(tài)變量在程序開(kāi)始時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷(xiāo)毀考传。
·???????? 與實(shí)例變量具有相似的可見(jiàn)性吃型。但為了對(duì)類(lèi)的使用者可見(jiàn),大多數(shù)靜態(tài)變量聲明為public類(lèi)型僚楞。
·???????? 默認(rèn)值和實(shí)例變量相似勤晚。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false泉褐,引用類(lèi)型默認(rèn)值是null赐写。變量的值可以在聲明的時(shí)候指定,也可以在構(gòu)造方法中指定膜赃。此外挺邀,靜態(tài)變量還可以在靜態(tài)語(yǔ)句塊中初始化。
·???????? 靜態(tài)變量可以通過(guò):ClassName.VariableName(類(lèi)名.屬性)的方式訪問(wèn)。
·???????? 類(lèi)變量被聲明為public static final類(lèi)型時(shí)端铛,類(lèi)變量名稱(chēng)一般建議使用大寫(xiě)字母泣矛。如果靜態(tài)變量不是public和final類(lèi)型,其命名方式與實(shí)例變量以及局部變量的命名方式一致沦补。
Java語(yǔ)言提供了很多修飾符乳蓄,主要分為以下兩類(lèi):
1,訪問(wèn)修飾符
2夕膀,非訪問(wèn)修飾符
訪問(wèn)控制修飾符
Java中,可以使用訪問(wèn)控制符來(lái)保護(hù)對(duì)類(lèi)美侦、變量产舞、方法和構(gòu)造方法的訪問(wèn)。Java支持4種不同的訪問(wèn)權(quán)限菠剩。
默認(rèn)的易猫,也稱(chēng)為 default,在同一包內(nèi)可見(jiàn)具壮,不使用任何修飾符准颓。
私有的,以 private 修飾符指定棺妓,在同一類(lèi)內(nèi)可見(jiàn)攘已。
共有的,以 public 修飾符指定怜跑,對(duì)所有類(lèi)可見(jiàn)样勃。
受保護(hù)的,以 protected 修飾符指定性芬,對(duì)同一包內(nèi)的類(lèi)和所有子類(lèi)可見(jiàn)峡眶。
非訪問(wèn)修飾符
為了實(shí)現(xiàn)一些其他的功能,Java 也提供了許多非訪問(wèn)修飾符植锉。
1辫樱,static 修飾符,用來(lái)創(chuàng)建類(lèi)方法和類(lèi)變量俊庇。
2狮暑,final 修飾符,用來(lái)修飾類(lèi)暇赤、方法和變量心例,final 修飾的類(lèi)不能夠被繼承,修飾的方法不能被繼承類(lèi)重新定義鞋囊,修飾的變量為常量止后,是不可修改的。
3,abstract 修飾符译株,用來(lái)創(chuàng)建抽象類(lèi)和抽象方法瓜喇。
4,synchronized 和 volatile 修飾符歉糜,主要用于線程的編程乘寒。