本文小編為大家詳細(xì)介紹“Java變量類型和修飾符實(shí)例分析”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Java變量類型和修飾符實(shí)例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
舒城網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),舒城網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為舒城上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的舒城做網(wǎng)站的公司定做!
和C++差不多,就是:
type identifier [ = value][, identifier [= value] ...];
type為Java數(shù)據(jù)類型。identifier是變量名??梢允褂枚禾柛糸_來聲明多個同類型變量??梢月暶鞯毁x值。
獨(dú)立于方法之外的變量,用 static 修飾。
無論一個類創(chuàng)建了多少個對象,類只擁有類變量的一份拷貝。
靜態(tài)變量在第一次被訪問時創(chuàng)建,在程序結(jié)束時銷毀。與實(shí)例變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型。
靜態(tài)變量屬于類,該類不生產(chǎn)對象,通過類名就可以調(diào)用靜態(tài)變量。
和大多數(shù)語言一樣,只存在于作用域內(nèi)部的周期,函數(shù)或者方法運(yùn)行完就銷毀。(注意JAVA不會給局部變量默認(rèn)賦值,需要聲明的時候賦值)
獨(dú)立于方法之外的變量,不過沒有 static 修飾。實(shí)例變量聲明在一個類中,但在方法、構(gòu)造方法和語句塊之外;
實(shí)例變量的值應(yīng)該至少被一個方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實(shí)例變量信息;
實(shí)例變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是0,布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null。變量的值可以在聲明時指定,也可以在構(gòu)造方法中指定;
實(shí)例變量屬于該類的對象,必須產(chǎn)生該類對象,才能調(diào)用實(shí)例變量。
很多種類修飾符,主要分 非訪問修飾符和訪問修飾符:
default (即默認(rèn),什么也不寫):
在同一包內(nèi)可見,不使用任何修飾符。大多數(shù)時候默認(rèn)跟public差不多的權(quán)限和繼承。
注意:和default 的不同就是public 意味著任何地方的其他類都能訪問,而默認(rèn)default只能在這個包內(nèi)使用。
private :
在同一類內(nèi)可見。最嚴(yán)格的的權(quán)限,只能給所處的類使用,甚至子類們也不能使用,也不能繼承。
注意:不能修飾類(外部類)
public :
對所有類可見。
注意:和default 的不同就是public 意味著任何地方的其他類都能訪問,而默認(rèn)default只能在這個包內(nèi)使用。
protected :
對同一包內(nèi)的類和所有子類可見。
子類與基類在同一包中:被聲明為 protected 的變量、方法和構(gòu)造器能被同一個包中的任何其他類訪問;
子類與基類不在同一包中:那么在子類中,子類實(shí)例可以訪問其從基類繼承而來的 protected 方法,而不能訪問基類實(shí)例的protected方法。
注意:不能修飾類(外部類)。
注意:
父類中聲明為 public 的方法在子類中也必須為 public。
父類中聲明為 protected 的方法在子類中要么聲明為 protected,要么聲明為 public,不能聲明為 private。
父類中聲明為 private 的方法,不能夠被繼承。
static:
分靜態(tài)變量和靜態(tài)方法,靜態(tài)變量見本文上面。
靜態(tài)方法:static關(guān)鍵字用來聲明獨(dú)立于對象的靜態(tài)方法。靜態(tài)方法不能使用類的非靜態(tài)變量。靜態(tài)方法從參數(shù)列表得到數(shù)據(jù),然后計算這些數(shù)據(jù)。(靜態(tài)變量已經(jīng)在內(nèi)存中,而非靜態(tài)得等到他們聲明的時候才有)
靜態(tài)方法可以通過類名直接調(diào)用,而不需要實(shí)例化類的對象。這樣一些工具類里聲明靜態(tài)方法,用起來就比較方便。
final:
final 表示"最后的、最終的"含義,變量一旦賦值后,不能被重新賦值。也分變量和方法。
被 final 修飾的實(shí)例變量必須顯式指定初始值。final 修飾符通常和 static 修飾符一起使用來創(chuàng)建類常量。
父類中的 final 方法可以被子類繼承,但是不能被子類重寫。
聲明 final 方法的主要目的是防止該方法的內(nèi)容被修改。
abstract :
抽象類不能用來實(shí)例化對象,聲明抽象類的唯一目的是為了將來對該類進(jìn)行擴(kuò)充。一個類不能同時被 abstract 和 final 修飾。如果一個類包含抽象方法,那么該類一定要聲明為抽象類,否則將出現(xiàn)編譯錯誤。
抽象方法是一種沒有任何實(shí)現(xiàn)的方法,該方法的的具體實(shí)現(xiàn)由子類提供。抽象方法不能被聲明成 final 和 static。
任何繼承抽象類的子類必須實(shí)現(xiàn)父類的所有抽象方法,除非該子類也是抽象類。
如果一個類包含若干個抽象方法,那么該類必須聲明為抽象類。抽象類可以不包含抽象方法。
synchronized :
synchronized 關(guān)鍵字聲明的方法同一時間只能被一個線程訪問。synchronized 修飾符可以應(yīng)用于四個訪問修飾符。
transient :
序列化的對象包含被 transient 修飾的實(shí)例變量時,java 虛擬機(jī)(JVM)跳過該特定的變量。
該修飾符包含在定義變量的語句中,用來預(yù)處理類和變量的數(shù)據(jù)類型。
volatile:
volatile 修飾的成員變量在每次被線程訪問時,都強(qiáng)制從共享內(nèi)存中重新讀取該成員變量的值。而且,當(dāng)成員變量發(fā)生變化時,會強(qiáng)制線程將變化值回寫到共享內(nèi)存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。
一個 volatile 對象引用可能是 null。
讀到這里,這篇“Java變量類型和修飾符實(shí)例分析”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。