• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            Java靜態(tài)初始化,實(shí)例初始化以及構(gòu)造方法

            首先有三個(gè)概念需要了解:
            一.靜態(tài)初始化:是指執(zhí)行靜態(tài)初始化塊里面的內(nèi)容。
            二.實(shí)例初始化:是指執(zhí)行實(shí)例初始化塊里面的內(nèi)容。
            三.構(gòu)造方法:一個(gè)名稱跟類的名稱一樣的方法,特殊在于不帶返回值。
            對(duì)于這三個(gè)概念,給出以下程序,方便理解:

            Java代碼 clip_image001

            class Book{ 

                public static int booksum=0;//靜態(tài)變量 

             

                static{//這是靜態(tài)初始化塊 

                    print(); 

                    System.out.println("this is static block"); 

                } 

             

                {//實(shí)例初始化塊 

                    System.out.println(booksum); 

                } 

             

                public Book(){//構(gòu)造方法 

                    System.out.println("this is Book's constructor~");  

                    booksum+=1; 

                } 

             

                public static void print(){//靜態(tài)方法 

                    System.out.println("this is static method~"); 

                } 

            } 

             


            我僅從代碼執(zhí)行的角度來(lái)探討Java加載類、創(chuàng)建對(duì)象的過(guò)程,并沒(méi)有深入到JVM的機(jī)制中去,因此不保證JVM
            這樣的一個(gè)過(guò)程,但我認(rèn)為如果僅想對(duì)Java的代碼執(zhí)行過(guò)程有個(gè)了解,我下面的分析就足夠了。
            1
            一個(gè)對(duì)象第一次被創(chuàng)建時(shí),先要加載該對(duì)象所屬的類,即對(duì)應(yīng)的.class文件,當(dāng)然如果類已經(jīng)加載,再次創(chuàng)建該類的對(duì)象時(shí),就不再需要重新加載類了。
            而一個(gè)類加載的時(shí)候,有三個(gè)部分需要加載:

            a:一個(gè)是靜態(tài)變量

            b:再然后是靜態(tài)方法,

            c:然后是靜態(tài)初始化塊


            2.然后開(kāi)始創(chuàng)建該類的實(shí)例了,當(dāng)然如果靜態(tài)方法跟靜態(tài)初始化對(duì)象中有對(duì)象的創(chuàng)建時(shí),就繼續(xù)加載該對(duì)象的類,當(dāng)然已經(jīng)加載了該對(duì)象的類的話就不需要再次加載了。那么對(duì)象實(shí)例的創(chuàng)建過(guò)程是什么呢?

            a:首先是成員變量的引入,

            b:然后是實(shí)例初始化塊

            c:之后才是構(gòu)造方法,

            構(gòu)造方法執(zhí)行完成之后才算把這個(gè)對(duì)象給創(chuàng)建出來(lái)了。


            在這個(gè)過(guò)程中,真正可以編寫(xiě)執(zhí)行代碼的地方有三個(gè),

            a:靜態(tài)初始化、

            b:實(shí)例初始化

            c:以及構(gòu)造方法。

             

                從以上的分析中我們可以看到,這三個(gè)代碼塊的執(zhí)行順序是

            先類的靜態(tài)初始化,

            再實(shí)例初始化,

            最后執(zhí)行構(gòu)造方法。

             

                也就是說(shuō),靜態(tài)初始化是屬于類加載的過(guò)程,所以它只執(zhí)行一次,而實(shí)例初始化是每個(gè)對(duì)象創(chuàng)建時(shí)都會(huì)執(zhí)行一次,而構(gòu)造方法跟實(shí)例初始化其實(shí)也差不多,不過(guò)它在實(shí)例初始化之后執(zhí)行,而且構(gòu)造方法可以重載多個(gè),執(zhí)行哪個(gè)構(gòu)造方法是根據(jù)你的選擇來(lái)的。實(shí)例初始化據(jù) Thinking in Java上說(shuō),對(duì)于匿名內(nèi)部類的初始化來(lái)說(shuō)是必須的。不過(guò)我還沒(méi)看到那邊,先了解一下,類的基本執(zhí)行過(guò)程,做個(gè)總結(jié),歡迎批評(píng)指正。

             

            posted on 2009-08-17 12:16 肥仔 閱讀(352) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Web-后臺(tái)

            2020久久精品国产免费| 婷婷久久久亚洲欧洲日产国码AV| 久久国产高潮流白浆免费观看| 久久久久人妻一区二区三区vr| 久久国产亚洲精品麻豆| 国产视频久久| 欧美精品福利视频一区二区三区久久久精品 | 欧美成a人片免费看久久| 狠狠精品久久久无码中文字幕| 99久久超碰中文字幕伊人| 久久AV高清无码| 日韩欧美亚洲综合久久影院Ds | 中文字幕精品无码久久久久久3D日动漫 | 伊人久久一区二区三区无码| 久久久91精品国产一区二区三区 | 亚洲国产精品嫩草影院久久| 99精品久久久久久久婷婷 | 亚洲伊人久久综合影院| 97精品国产91久久久久久| 久久久久亚洲AV成人网| 久久婷婷五月综合色奶水99啪| 国产免费久久精品丫丫| 91精品国产乱码久久久久久| 欧美久久亚洲精品| 久久综合狠狠综合久久激情 | 久久受www免费人成_看片中文| 91精品日韩人妻无码久久不卡| 久久精品九九亚洲精品| 一本久久a久久精品亚洲| 人妻中文久久久久| 久久精品国产只有精品66| 国产69精品久久久久99| 国内精品久久久久影院网站| 99久久精品国产麻豆| 99久久人妻无码精品系列| 久久国产精品一区二区| 久久青青草原精品影院| 国产激情久久久久影院老熟女免费 | 久久99久久99精品免视看动漫| 四虎亚洲国产成人久久精品| 欧美久久综合九色综合|