真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解Java代碼塊

如何理解Java代碼塊,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、武強(qiáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開(kāi)發(fā)成都商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為武強(qiáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

靜態(tài)代碼塊

首先我們來(lái)回顧一下static關(guān)鍵字,static關(guān)鍵字可以修飾類(lèi)和類(lèi)的成員還有構(gòu)造函數(shù),特點(diǎn)就是在類(lèi)創(chuàng)建對(duì)象前加載并且是所有對(duì)象共享的資源,比如靜態(tài)方法可以直接類(lèi)名打點(diǎn)調(diào)用,不需要使用new關(guān)鍵字來(lái)創(chuàng)建對(duì)象。
關(guān)于靜態(tài)方法和非靜態(tài)方法的比較
靜態(tài)方法:
  1. 靜態(tài)方法只可以調(diào)用靜態(tài)成員不可以調(diào)用非靜態(tài)成員

  2. 沒(méi)有this對(duì)象

非靜態(tài)方法:
  1. 非靜態(tài)方法既可以調(diào)用非靜態(tài)成員也可以調(diào)用靜態(tài)成員

靜態(tài)代碼塊作用域:在類(lèi)的內(nèi)部方法外,使用static修飾

public class CodeBlock {    static{        System.out.println("這是靜態(tài)代碼塊");    }}

什么時(shí)候執(zhí)行: 靜態(tài)代碼塊在類(lèi)被加載的時(shí)候就運(yùn)行了,而且只運(yùn)行一次,并且優(yōu)先于各種代碼塊以及構(gòu)造函數(shù)。如果一個(gè)類(lèi)中有多個(gè)靜態(tài)代碼塊,會(huì)按照書(shū)寫(xiě)順序依次執(zhí)行

關(guān)于靜態(tài)代碼塊的問(wèn)題:
  1. 靜態(tài)代碼塊是否可以訪問(wèn)方法?這個(gè)問(wèn)題需要從上面的靜態(tài)方法來(lái)解答,靜態(tài)代碼塊是可以調(diào)用靜態(tài)方法,但是無(wú)法調(diào)用非靜態(tài)方法

  2. 靜態(tài)代碼塊是否可以放在方法體?這個(gè)是不可以的,即使是靜態(tài)方法也是不可以放靜態(tài)代碼塊的,且靜態(tài)代碼塊是只能放在類(lèi)內(nèi)部,無(wú)法放在靜態(tài)方法內(nèi)部,因?yàn)殪o態(tài)塊是加載類(lèi)的時(shí)候就執(zhí)行,而靜態(tài)方法是需要調(diào)用才執(zhí)行,這里是有沖突的。

局部代碼塊

作用域:存在方法中

public static void main (String[] args){    {        int number = 1;    }    System.out.println(number);//異常}

 局部代碼塊執(zhí)行順序是和普通語(yǔ)句一樣,只不過(guò)區(qū)分的是在代碼塊中的變量無(wú)法在代碼塊外部調(diào)用,如上所示,輸出number時(shí)異常,這樣有效的控制變量的生命周期,及早釋放提高內(nèi)存使用率。

構(gòu)造代碼塊

構(gòu)造代碼塊作用域:在類(lèi)的內(nèi)部且在方法外,與靜態(tài)代碼塊的區(qū)別在于沒(méi)有static修飾,且在類(lèi)創(chuàng)建對(duì)象時(shí)執(zhí)行
public class CodeBlock {    {        System.out.println("這是構(gòu)造代碼塊");    }}
構(gòu)造代碼塊是在創(chuàng)建類(lèi)的對(duì)象才執(zhí)行,每次創(chuàng)建該類(lèi)的實(shí)例就會(huì)執(zhí)行一次,如有多個(gè)構(gòu)造代碼塊,執(zhí)行順序?yàn)閺纳现料隆?nbsp;

同部代碼塊

同步代碼塊作用域:在方法內(nèi)部,用synchronized修飾的代碼塊 

public class CodeBlock {    public void syncMethod(Object obj){        synchronized  (obj){
       }    }}

synchronized實(shí)質(zhì)上是一個(gè)鎖,為什么需要用鎖?當(dāng)有多條線程同時(shí)訪問(wèn)共享數(shù)據(jù)時(shí),會(huì)發(fā)生資源搶占,如果不進(jìn)行處理那么有可能會(huì)出現(xiàn)每個(gè)線程獲取到的數(shù)據(jù)都是不正確的,這里我們可以使用同步方法或者同步代碼塊,當(dāng)一個(gè)線程進(jìn)來(lái)時(shí),我們需要把其他線程擋在外面,直到這個(gè)線程使用完后才讓其他線程使用該資源。

代碼塊執(zhí)行順序
public class CodeBlock {    static{        System.out.println("靜態(tài)代碼塊");    }    {        System.out.println("構(gòu)造代碼塊");    }    public CodeBlock(){        System.out.println("無(wú)參構(gòu)造函數(shù)");    }
   public void sayHello(){        {            System.out.println("局部代碼塊");        }    }
   public static void main(String[] args) {        System.out.println("執(zhí)行了main方法");
       new CodeBlock().sayHello();;    }}
執(zhí)行結(jié)果
靜態(tài)代碼塊執(zhí)行了main方法構(gòu)造代碼塊無(wú)參構(gòu)造函數(shù)局部代碼塊
執(zhí)行順序?yàn)椋红o態(tài)代碼塊-->構(gòu)造代碼塊-->構(gòu)造函數(shù)-->局部代碼塊(跟同步代碼塊是同一級(jí)別)
關(guān)于父子類(lèi)的代碼塊執(zhí)行順序,這里就不多花時(shí)間了,執(zhí)行順序父類(lèi)的執(zhí)行在子類(lèi)之前執(zhí)行,除非是重寫(xiě)父類(lèi)的方法。

關(guān)于如何理解Java代碼塊問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


當(dāng)前名稱:如何理解Java代碼塊
當(dāng)前URL:http://weahome.cn/article/igicds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部