• <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

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

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

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

            Java代碼 clip_image001

            class Book{ 

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

             

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

                    print(); 

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

                } 

             

                {//實例初始化塊 

                    System.out.println(booksum); 

                } 

             

                public Book(){//構造方法 

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

                    booksum+=1; 

                } 

             

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

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

                } 

            } 

             


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

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

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

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


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

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

            b:然后是實例初始化塊

            c:之后才是構造方法,

            造方法執(zhí)行完成之后才算把這個對象給創(chuàng)建出來了。


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

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

            b:實例初始化

            c:以及構造方法。

             

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

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

            再實例初始化,

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

             

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

             

            posted on 2009-08-17 12:16 肥仔 閱讀(351) 評論(0)  編輯 收藏 引用 所屬分類: Web-后臺

            一本久久a久久精品综合香蕉| 国产高潮国产高潮久久久| 午夜精品久久久久9999高清| 日本加勒比久久精品| 亚洲综合精品香蕉久久网| 2021久久精品国产99国产精品| 精品久久久久久无码中文字幕 | 亚洲Av无码国产情品久久| 久久久国产视频| 久久亚洲精品中文字幕三区| 亚洲人成无码久久电影网站| 久久精品亚洲精品国产色婷| 色99久久久久高潮综合影院| 蜜臀久久99精品久久久久久小说| 久久激情五月丁香伊人| 久久亚洲精品人成综合网| 色偷偷88欧美精品久久久| AV无码久久久久不卡网站下载| 日本亚洲色大成网站WWW久久| 国产精品无码久久久久久| 久久99国产精品久久99小说| 久久亚洲国产午夜精品理论片| 2019久久久高清456| 狠狠色伊人久久精品综合网 | 久久久久国产精品| 国内精品久久久久久久久电影网| 一本久久久久久久| 久久99国产精品久久久| 亚洲AV无一区二区三区久久 | 欧美大香线蕉线伊人久久| 武侠古典久久婷婷狼人伊人| 狠狠色丁香婷婷综合久久来来去| 国产精品久久久久天天影视| 国产精品亚洲综合久久| 一级a性色生活片久久无| 久久久艹| 中文字幕无码av激情不卡久久| 久久精品国产精品亚洲人人 | 人妻精品久久久久中文字幕一冢本 | 97久久婷婷五月综合色d啪蜜芽| 亚洲欧美久久久久9999|