日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

java常用的關(guān)鍵字

 印度阿三17 2019-06-22

1、final關(guān)鍵字

final關(guān)鍵字可用于修飾類、方法以及變量。

修飾類:該類不能被繼承,該類的所有方法和成員都被隱式地指定為final。

修飾方法:鎖定方法,任何繼承類都不能修改他,所有的private方法都被隱式地指定為final方法。

修飾變量:若修飾的變量為基本數(shù)據(jù)類型,該變量值被賦值后不可改變;若修飾的變量為引用類型的變量,該變量被初始化后不可再被定義指向另一個(gè)對(duì)象,但指向的對(duì)象的內(nèi)容是可變的。

2、static變量

“全局”或者“靜態(tài)”的意思,給類使用而不是給對(duì)象使用。

被static修飾的方法或變量,無(wú)須依賴對(duì)象實(shí)例去訪問(wèn),只要類被加載了就可以通過(guò)類名直接去訪問(wèn)。原因:Java程序創(chuàng)建時(shí),在類首次被加載時(shí)會(huì)優(yōu)先執(zhí)行static變量、方法或代碼塊,并為其分配固定的內(nèi)存區(qū)域,JVM可以直接訪問(wèn)到他們,而不需要依賴某個(gè)特定的實(shí)例變量,并被類的所有實(shí)例共享。

修飾變量:靜態(tài)變量被所有的對(duì)象所共享,在內(nèi)存中只有一副本,當(dāng)且僅當(dāng)類初次加載時(shí)被初始化。

修飾方法:靜態(tài)方法不依賴于任何對(duì)象就可以被訪問(wèn),直接類名.方法名可以直接訪問(wèn)。因此,靜態(tài)方法中不能訪問(wèn)非靜態(tài)方法或非靜態(tài)變量。工具類?

修飾代碼塊:同理,僅執(zhí)行一次,提高代碼效率。

注:static作用于成員變量用來(lái)表示只保存一份副本,而final的作用是用來(lái)保證變量不可變。

3、public/private/protected關(guān)鍵字

public修飾符:任何類都可以訪問(wèn)

private修飾符:訪問(wèn)權(quán)限僅限于類內(nèi)部

protected修飾符:類及其子類或同一個(gè)包下的類可以訪問(wèn)

4、finally關(guān)鍵字

finally總是會(huì)被執(zhí)行,正常在try語(yǔ)句后,拋異常在catch語(yǔ)句后,除非前序語(yǔ)句中有System.exit(0)。

finally中return會(huì)修改try或catch中return的變量值嗎?

返回基本類型是值,返回引用類型是指向某個(gè)對(duì)象的地址;基礎(chǔ)類型被分配在棧中,對(duì)象分配在堆中。如果返回的是基本類型,直接復(fù)制一個(gè)變量返回,finally塊中的代碼不會(huì)影響到返回結(jié)果;若返回值是引用類型,finally語(yǔ)句塊可以修改其指向?qū)ο蟮闹怠?/p>

5、throw/throws關(guān)鍵字

throw 函數(shù)體,用于語(yǔ)句拋出異常,一般會(huì)用于程序出現(xiàn)某種邏輯時(shí)程序員主動(dòng)拋出某種特定類型的異常。

throws 函數(shù)頭,用于方法可能拋出異常的申明,聲明方法時(shí)跟上throws,交給上層處理拋出的異常。

6、transient關(guān)鍵字

一個(gè)對(duì)象實(shí)現(xiàn)了Serializable接口,該對(duì)象就會(huì)序列化。若是某些屬性不希望被序列化(如密碼),可以在該屬性前加transient修飾。如此,該字段的生命周期僅存在于調(diào)用者的內(nèi)存中而不會(huì)被寫(xiě)到磁盤(pán)中持久化。

靜態(tài)變量不管是否被transient修飾都不會(huì)被序列化。

在Java中,對(duì)象的序列化可以通過(guò)實(shí)現(xiàn)兩種接口來(lái)實(shí)現(xiàn),若實(shí)現(xiàn)的是Serializable接口,則所有的序列化將會(huì)自動(dòng)進(jìn)行,若實(shí)現(xiàn)的是Externalizable接口,則沒(méi)有任何東西可以自動(dòng)序列化,需要在writeExternal方法中進(jìn)行手工指定所要序列化的變量,這與是否被transient修飾無(wú)關(guān)。

7、synchronized關(guān)鍵字

synchronized 同步鎖,使用鎖的機(jī)制實(shí)現(xiàn)同步。

修飾一個(gè)代碼塊,同步代碼塊,作用對(duì)象是調(diào)用這個(gè)代碼塊的對(duì)象,指定對(duì)象加鎖。

修飾一個(gè)方法,同步方法,作用對(duì)象是調(diào)用這個(gè)方法的對(duì)象,當(dāng)前實(shí)例加鎖。

修飾一個(gè)靜態(tài)方法,作用對(duì)象是這個(gè)類的所有對(duì)象,當(dāng)前類對(duì)象加鎖。

修飾一個(gè)類,作用對(duì)象是這個(gè)類的所有對(duì)象,當(dāng)前類對(duì)象加鎖。

兩個(gè)并發(fā)進(jìn)程訪問(wèn)同一個(gè)對(duì)象object中的synchronized(this)同步代碼時(shí),一個(gè)時(shí)間內(nèi)只有一個(gè)線程得到執(zhí)行,另一個(gè)線程必須等到該線程執(zhí)行完該代碼塊才可以執(zhí)行。

當(dāng)一個(gè)線程訪問(wèn)一個(gè)對(duì)象object中的synchronized(this)同步代碼時(shí),另一個(gè)線程可以訪問(wèn)該object的非同步代碼塊。

當(dāng)一個(gè)線程訪問(wèn)一個(gè)對(duì)象object中的synchronized(this)同步代碼時(shí),其他線程對(duì)該object對(duì)象中的其他同步代碼塊的訪問(wèn)也被阻塞。 對(duì)象鎖

注:使用該關(guān)鍵字,需要注意是否是對(duì)同一個(gè)對(duì)象加鎖,對(duì)于靜態(tài)方法或者是類,該類的所有對(duì)象同一把鎖。

8、volatile關(guān)鍵字

修飾變量

保證不同線程對(duì)于這個(gè)變量進(jìn)行操作時(shí)的可見(jiàn)性,即一個(gè)線程修改了該變量的值,該新值對(duì)于其他線程是立即可見(jiàn)的。如果是寫(xiě)操作,會(huì)導(dǎo)致其他CPU中對(duì)應(yīng)的緩存行無(wú)效,需要到主存中讀取該變量的值。

禁止進(jìn)行指令重排序。

加入volatile關(guān)鍵字會(huì)多一個(gè)lock前綴指令,相當(dāng)于一個(gè)內(nèi)存屏障,可以保證指令重排序不會(huì)穿過(guò)屏障。

強(qiáng)制將對(duì)緩存的修改操作立即寫(xiě)入主存。

來(lái)源:https://www./content-1-258551.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多