<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JAVA中的static關(guān)鍵字,執(zhí)行順序面試被問(wèn)起,你回答是否正確?

          共 2545字,需瀏覽 6分鐘

           ·

          2021-07-31 03:17

          在JAVA 中有很多的關(guān)鍵字,比如 final、private、public等等很多很多,然而今天我們要聊的是static?關(guān)鍵字。


          都知道在JAVA?中?static?有三個(gè)方面的作用:


          • 修飾成員方法

          • 修飾成員屬性

          • 用于代碼塊


          首先我們應(yīng)該明白,被static?修飾過(guò)的不論是方法,屬性還是代碼塊 ,不是作用于類實(shí)例,而是跟隨類,直接被類加載了。這一點(diǎn)非常非常重要


          下面我們一起來(lái)看看這段代碼,如果你能夠理解,那說(shuō)明是真正理解了。


          這是第一個(gè)父類:

          public class SuperClass {    SuperClass(String str)    {        System.out.println("Super with a string." + str);    }
          public SuperClass() {
          }}


          這是繼承父類的一個(gè)子類:

          public class SubClass extends SuperClass {    SuperClass superClass1 = new SuperClass("superClass_1");    SuperClass superClass2 = new SuperClass("superClass_2");    static SuperClass superClass3 = new SuperClass("superClass_3");
          SubClass(String SubClass){ System.out.println(" this is SubClass " + SubClass); }}


          這是測(cè)試類:

          public class TestClass {    static SuperClass superClass4 = new SuperClass("superClass_4");    public static void main(String[] args) {        System.out.println("test start");
          SuperClass superClass = new SuperClass("superClass");
          System.out.println("_______________________________");
          SubClass subClass = new SubClass("subClass"); }}


          現(xiàn)在執(zhí)行?TestClass?的 main 方法,你知道會(huì)打印出來(lái)什么呢?


          什么也不說(shuō),直接上程序執(zhí)行的結(jié)果圖


          1a93b097495aaac7f676fa040fa36199.webp


          程序打印的第一句話是:?Super with a string.superClass_4


          是因?yàn)樵?span id="go7utgvlrp" class="code-snippet__title" style="font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:14px;text-align:left;background-color:rgba(0,0,0,.03);">TestClass類中,是這樣定義?的?

          static SuperClass superClass4 = new SuperClass("superClass_4");

          程序在執(zhí)行的時(shí)候,而superClass4 是被static關(guān)鍵字修飾的,所以會(huì)先執(zhí)行?new SuperClass("superClass_4")。


          接下來(lái)會(huì)執(zhí)行:?System.out.println("test start");

          再執(zhí)行:SuperClass superClass = new SuperClass("superClass");


          至于后面的4行執(zhí)行結(jié)果:


          Super with a string.superClass_3Super with a string.superClass_1Super with a string.superClass_2?this is SubClass subClass

          也能夠理解了吧。


          現(xiàn)在如果我做一下變動(dòng):

          static SuperClass superClass4 = new SuperClass("superClass_4");


          變?yōu)椋?br />

          static SuperClass superClass_4 = new SubClass("superClass_4");


          細(xì)心的同學(xué)會(huì)發(fā)現(xiàn):?SuperClass?變成了??SubClass


          如果是這樣,我們一起來(lái)看看這個(gè)結(jié)果到底是怎么樣的?


          0d36dbb8f336c0c71322e67b627746fc.webp


          上面紅色框打印的東西,很多同學(xué)應(yīng)該會(huì)理解,但下面這個(gè)紅色框里的信息可能有同學(xué)就有些疑惑了?

          Super with a string.superClass_1Super with a string.superClass_2 this is SubClass subClass

          可能會(huì)問(wèn):耶??怎么不打印

          Super with a string.superClass_3

          如果能夠理解其原理,當(dāng)然知道為什么不打印;而如果沒(méi)發(fā)現(xiàn)這點(diǎn)的話,這只能說(shuō)對(duì)static 關(guān)鍵字還沒(méi)理解到位,不過(guò)沒(méi)關(guān)系,只需要繼續(xù)往下看,我們繼續(xù)分析。


          在?TestClass類中:


          1. 定論了??static SuperClass superClass_4 =new SubClass("superClass_4")

          2. main 方法里面執(zhí)行了?SubClass subClass = new SubClass("subClass");

          都引用了?SubClass?這個(gè)類,回頭來(lái)看看這個(gè)屬性是怎么定義的:

          static SuperClass superClass3 = new SuperClass("superClass_3");

          是一個(gè)被?static ?修飾的屬性 superClass3 ,這就說(shuō)明這個(gè)屬性是屬于SubClass類的,后面在使用 new 關(guān)鍵字實(shí)例化 SubClass 時(shí), superClass3 只會(huì)被實(shí)例化一次。所以在上面打?。?/span>

          Super with a string.superClass_3


          只會(huì)出現(xiàn)一次。


          另外還有一個(gè)點(diǎn)沒(méi)有講到,實(shí)例化一個(gè)類的過(guò)程:

          首先:是實(shí)例化類對(duì)象的(優(yōu)先級(jí)別:靜態(tài)?>?非靜態(tài)

          然后:調(diào)用構(gòu)造方法


          好了,今天關(guān)于JAVA中?static?關(guān)鍵字的知識(shí)就寫(xiě)到這里。

          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人片网站 | 欧美成人无码一区二区三区 | 青青网站黄色 | 色噜噜狠狠一区二区三区Av蜜芽 | 少妇大战28厘米黑人 |