三人行必有我?guī)煟松切枰粩鄬W(xué)習(xí)的焰络,在這里我們相遇就是緣分戴甩,希望各位可以看完這篇文章,也歡迎大家在下面留言討論闪彼,天冷了甜孤,也動(dòng)動(dòng)手指轉(zhuǎn)發(fā)收藏一下,謝謝大家畏腕!
1.訪問控制
1)private私有的
private關(guān)鍵字是訪問控制修飾符缴川,可以應(yīng)用于類、方法或字段(在類中聲明的變量)描馅。只能在聲明private(內(nèi)部)類把夸、方法或字段的類中引用這些類、方法或字段铭污。在類的外部或者對于子類而言俱萍,它們是不可見的饶氏。所有類成員的默認(rèn)訪問范圍都是package訪問柳爽,也就是說绽快,除非存在特定的訪問控制修飾符,否則刁绒,可以從同一個(gè)包中的任何類訪問類成員。
2)protected受保護(hù)的
protected關(guān)鍵字是可以應(yīng)用于類烤黍、方法或字段(在類中聲明的變量)的訪問控制修飾符知市∩得耍可以在聲明protected類、方法或字段的類嫂丙、同一個(gè)包中的其他任何類以及任何子類(無論子類是在哪個(gè)包中聲明的)中引用這些類娘赴、方法或字段。所有類成員的默認(rèn)訪問范圍都是package訪問跟啤,也就是說诽表,除非存在特定的訪問控制修飾符,否則隅肥,可以從同一個(gè)包中的任何類訪問類成員竿奏。
3)public公共的
public關(guān)鍵字是可以應(yīng)用于類、方法或字段(在類中聲明的變量)的訪問控制修飾符腥放》盒ィ可能只會(huì)在其他任何類或包中引用public類、方法或字段秃症。所有類成員的默認(rèn)訪問范圍都是package訪問候址,也就是說,除非存在特定的訪問控制修飾符种柑,否則岗仑,可以從同一個(gè)包中的任何類訪問類成員。
2.類聚请、方法和變量修飾符
1)abstract聲明抽象
abstract關(guān)鍵字可以修改類或方法赔蒲。abstract類可以擴(kuò)展(增加子類),但不能直接實(shí)例化良漱。abstract方法不在聲明它的類中實(shí)現(xiàn)舞虱,但必須在某個(gè)子類中重寫。采用abstract方法的類本來就是抽象類母市,并且必須聲明為abstract矾兜。
2)class類
class關(guān)鍵字用來聲明新的Java類,該類是相關(guān)變量和/或方法的集合患久。類是面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的基本構(gòu)造單位椅寺。類通常代表某種實(shí)際實(shí)體,如幾何形狀或人蒋失。類是對象的模板返帕。每個(gè)對象都是類的一個(gè)實(shí)例。要使用類篙挽,通常使用new操作符將類的對象實(shí)例化荆萤,然后調(diào)用類的方法來訪問類的功能。
3)extends繼承、擴(kuò)展
extends關(guān)鍵字用在class或interface聲明中链韭,用于指示所聲明的類或接口是其名稱后跟有extends關(guān)鍵字的類或接口的子類偏竟。子類繼承父類的所有public和protected變量和方法。子類可以重寫父類的任何非final方法敞峭。一個(gè)類只能擴(kuò)展一個(gè)其他類踊谋。
4)final最終、不可改變
final關(guān)鍵字可以應(yīng)用于類旋讹,以指示不能擴(kuò)展該類(不能有子類)殖蚕。final關(guān)鍵字可以應(yīng)用于方法,以指示在子類中不能重寫此方法沉迹。一個(gè)類不能同時(shí)是abstract又是final睦疫。abstract意味著必須擴(kuò)展類,final意味著不能擴(kuò)展類胚股。一個(gè)方法不能同時(shí)是abstract又是final笼痛。abstract意味著必須重寫方法,final意味著不能重寫方法琅拌。
5)implements實(shí)現(xiàn)
implements關(guān)鍵字在class聲明中使用缨伊,以指示所聲明的類提供了在implements關(guān)鍵字后面的名稱所指定的接口中所聲明的所有方法的實(shí)現(xiàn)。類必須提供在接口中所聲明的所有方法的實(shí)現(xiàn)进宝。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口刻坊。
6)interface接口
interface關(guān)鍵字用來聲明新的Java接口,接口是方法的集合党晋。
接口是Java語言的一項(xiàng)強(qiáng)大功能谭胚。任何類都可聲明它實(shí)現(xiàn)一個(gè)或多個(gè)接口,這意味著它實(shí)現(xiàn)了在這些接口中所定義的所有方法未玻。
實(shí)現(xiàn)了接口的任何類都必須提供在該接口中的所有方法的實(shí)現(xiàn)灾而。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。
7)native本地
native關(guān)鍵字可以應(yīng)用于方法扳剿,以指示該方法是用Java以外的語言實(shí)現(xiàn)的旁趟。
8)new新,創(chuàng)建
new關(guān)鍵字用于創(chuàng)建類的新實(shí)例。
new關(guān)鍵字后面的參數(shù)必須是類名庇绽,并且類名的后面必須是一組構(gòu)造方法參數(shù)(必須帶括號(hào))锡搜。
參數(shù)集合必須與類的構(gòu)造方法的簽名匹配。
=左側(cè)的變量的類型必須與要實(shí)例化的類或接口具有賦值兼容關(guān)系瞧掺。
9)static靜態(tài)
static關(guān)鍵字可以應(yīng)用于內(nèi)部類(在另一個(gè)類中定義的類)耕餐、方法或字段(類的成員變量)。通常辟狈,static關(guān)鍵字意味著應(yīng)用它的實(shí)體在聲明該實(shí)體的類的任何特定實(shí)例外部可用肠缔。static(內(nèi)部)類可以被其他類實(shí)例化和引用(即使它是頂級類)。在上面的示例中,另一個(gè)類中的代碼可以實(shí)例化MyStaticClass類桩砰,方法是用包含它的類名來限定其名稱拓春,如MyClass.MyStaticClass释簿。static字段(類的成員變量)在類的所有實(shí)例中只存在一次亚隅。
可以從類的外部調(diào)用static方法,而不用首先實(shí)例化該類庶溶。這樣的引用始終包括類名作為方法調(diào)用的限定符煮纵。
模式:public final static varName =
;通常用于聲明可以在類的外部使用的類常量。在引用這樣的類常量時(shí)需要用類名加以限定偏螺。在上面的示例中行疏,另一個(gè)類可以用MyClass.MAX_OBJECTS形式來引用MAX_OBJECTS常量。
10) strictfp嚴(yán)格,精準(zhǔn)
strictfp的意思是FP-strict套像,也就是說精確浮點(diǎn)的意思酿联。在Java虛擬機(jī)進(jìn)行浮點(diǎn)運(yùn)算時(shí),如果沒有指定strictfp關(guān)鍵字時(shí)夺巩,Java的編譯器以及運(yùn)行環(huán)境在對浮點(diǎn)運(yùn)算的表達(dá)式是采取一種近似于我行我素的行為來完成這些操作贞让,以致于得到的結(jié)果往往無法令人滿意。而一旦使用了strictfp來聲明一個(gè)類柳譬、接口或者方法時(shí)喳张,那么所聲明的范圍內(nèi)Java的編譯器以及運(yùn)行環(huán)境會(huì)完全依照浮點(diǎn)規(guī)范IEEE-754來執(zhí)行。因此如果想讓浮點(diǎn)運(yùn)算更加精確美澳,而且不會(huì)因?yàn)椴煌挠布脚_(tái)所執(zhí)行的結(jié)果不一致的話销部,那就請用關(guān)鍵字strictfp≈聘可以將一個(gè)類舅桩、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構(gòu)造函數(shù)聲明strictfp關(guān)鍵字
11) synchronized線程雨膨、同步
synchronized關(guān)鍵字可以應(yīng)用于方法或語句塊擂涛,并為一次只應(yīng)由一個(gè)線程執(zhí)行的關(guān)鍵代碼段提供保護(hù)。synchronized關(guān)鍵字可防止代碼的關(guān)鍵代碼段一次被多個(gè)線程執(zhí)行哥放。如果應(yīng)用于靜態(tài)方法歼指,那么,當(dāng)該方法一次由一個(gè)線程執(zhí)行時(shí)甥雕,整個(gè)類將被鎖定踩身。如果應(yīng)用于實(shí)例方法,那么社露,當(dāng)該方法一次由一個(gè)線程訪問時(shí)挟阻,該實(shí)例將被鎖定。
如果應(yīng)用于對象或數(shù)組,當(dāng)關(guān)聯(lián)的代碼塊一次由一個(gè)線程執(zhí)行時(shí)附鸽,對象或數(shù)組將被鎖定脱拼。
12) transient短暫
transient關(guān)鍵字可以應(yīng)用于類的成員變量,以便指出該成員變量不應(yīng)在包含它的類實(shí)例已序列化時(shí)被序列化坷备。
當(dāng)一個(gè)對象被串行化的時(shí)候熄浓,transient型變量的值不包括在串行化的表示中,然而非transient型的變量是被包括進(jìn)去的省撑。
Java的serialization提供了一種持久化對象實(shí)例的機(jī)制赌蔑。當(dāng)持久化對象時(shí),可能有一個(gè)特殊的對象數(shù)據(jù)成員竟秫,我們不想用serialization機(jī)制來保存它娃惯。為了在一個(gè)特定對象的一個(gè)域上關(guān)閉serialization,可以在這個(gè)域前加上關(guān)鍵字transient肥败。
transient是Java語言的關(guān)鍵字趾浅,用來表示一個(gè)域不是該對象串行化的一部分。當(dāng)一個(gè)對象被串行化的時(shí)候馒稍,transient型變量的值不包括在串行化的表示中皿哨,然而非transient型的變量是被包括進(jìn)去的。
13) volatile易失
volatile關(guān)鍵字用于表示可以被多個(gè)線程異步修改的成員變量筷黔。
注意:volatile關(guān)鍵字在許多Java虛擬機(jī)中都沒有實(shí)現(xiàn)往史。volatile的目標(biāo)用途是為了確保所有線程所看到的指定變量的值都是相同的。
Java語言中的volatile變量可以被看作是一種“程度較輕的synchronized”佛舱;與synchronized塊相比椎例,volatile變量所需的編碼較少,并且運(yùn)行時(shí)開銷也較少请祖,但是它所能實(shí)現(xiàn)的功能也僅是synchronized的一部分订歪。
最后,如果想有一群“臭味相投”的朋友來一起交流學(xué)習(xí)的話肆捕,歡迎大家搜索群460570824刷晋,讓我們共同進(jìn)步!