亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java中的初始塊執行順序

2019-11-06 06:35:22
字體:
來源:轉載
供稿:網友

java中除了使用構造器類對單個對象進行初始化操作外,我們還可以通過初始化塊來實現。在一個類中可以有多個初始化塊,相同類型的初始化塊之間有順序:前面定義的初始化塊先執行,后面定義的初始化塊后執行。使用static修飾的初始化塊,稱為靜態初始化塊,在初始化塊中可以定義局部變量、調用其他對象的方法,以及使用分支、循環語句等。

靜態初始快:執行優先級高于非靜態初始塊,它會在對象裝載到系統的時候執行一次,執行完成便銷毀,它僅能初始化類變量,即static修飾的數據成員。

非靜態初始化塊:執行的時候如果有靜態初始化塊,先執行靜態初始化塊再執行非靜態初始化塊,在每個對象生成時都會被執行一次,它可以初始化類的實例變量。非靜態初始化塊會在構造函數執行時,在構造函數主體代碼執行之前被運行。

下面程序就定義了初始化塊:

class Person {    {        int num = 25;        System.out.PRintln("普通初始塊1");    }    static {        int num = 45;        System.out.println("靜態初始塊1");    }    {        int num = 25;        System.out.println("普通初始塊2");    }    public Person() {        System.out.println("無參構造器");    }}

public class MainTest {    public static void main(String[] args) {        new Person();    }}

輸出結果如下:

靜態初始塊1普通初始塊1普通初始塊2無參構造器

從運行結果來看,當創建Java對象時,系統總是先調用靜態初始化塊,之后按順序執行普通初始化塊,最后才執行構造器。靜態初始化塊是類相關的,用于對整個類進行初始化處理,靜態初始化塊也被稱為類初始化塊,也屬于類的靜態成員,因此不能訪問非靜態成員。

最后值得指出的是:當JVM第一次主動使用某個類時,系統會在類準備階段為該類的所有靜態Field分配內存,在初始化階段負責初始化這些靜態Field,初始化靜態Field就是執行類初始化代碼或者聲明類Field時指定的初始值。

首先有三個概念需要了解:

一、靜態初始化:是指執行靜態初始化塊里面的內容。

二、實例初始化:是指執行實例初始化塊里面的內容。

三、構造方法:一個名稱和類的名稱一樣的方法,特殊在于不帶返回值。

我們先來看看一段程序結果:

public class Book {    public static int booksum = 0; // 靜態變量    static { // 這是靜態初始化塊        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() { // 靜態方法        System.out.println("this is static method");    }    public static void main(String[] args) {        // Book book = new Book();    }}

執行結果:

this is static methodthis is static block

去掉main方法中的注釋,運行結果為:

this is static methodthis is static block初始化塊:0this is Book's constructor

總結:

僅從代碼執行的角度來探討Java加載類、創建對象的過程,并沒有深入到JVM的機制中去。

1.一個對象第一次創建的時候,先要加載該對象所屬的類,即對應的.class文件,當然如果類已經加載,再次創建該類的對象時,就不再需要重新加載類了。而一個類加載的時候,有三個部分需要加載,一個是靜態變量,再然后是靜態方法,然后是靜態初始化塊。(見到第一次執行結果就知道了,由于沒有創建實例所以初始化塊不執行)

2.然后開始創建該類的實例了,當然如果靜態方法跟靜態初始化塊中有對象的創建時,就繼續加載該對象的類,當然已經加載了該對象的類的話就不需要再次加載了。那么對象實例的創建過程是什么呢?首先是成員變量的引入,然后是實例初始化塊,之后才是構造方法,構造方法執行完成后才算把這個對象給創建出來了。

在這個過程中,真正可以編寫執行代碼的有三個地方,靜態初始化塊、實例初始化塊以及構造方法塊。從以上的分析中我們可以看到,這三個代碼塊的執行順序是”先類的靜態初始化塊,再實例初始化塊,最后是執行構造方法塊。也就是說,靜態初始化是屬于類加載的過程,所以它執行一次,而實例初始化是每個對象創建時都會執行一次,而構造方法跟實例初始化塊其實差不多,不過它在實例初始化塊之后執行,而且構造方法可以重載多個,執行哪個構造方法是根據你的選擇來的。

看下面的代碼運行結果也可得出上面的結論:

    public static void main(String[] args) {        Book book1 = new Book();        Book book2 = new Book();    }

執行結果如下所示:

this is static methodthis is static block初始化塊:0this is Book's constructor初始化塊:1this is Book's constructor


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黑人一级爽快片淫片高清| 亚洲欧美日韩一区在线| 久久av中文字幕| 欧美激情手机在线视频| 91超碰caoporn97人人| 亚洲人成网站免费播放| 精品欧美一区二区三区| 国产91精品网站| 久久99青青精品免费观看| 欧美日韩中文字幕| 色综合亚洲精品激情狠狠| 精品夜色国产国偷在线| 欧美乱妇40p| 精品国产乱码久久久久久虫虫漫画| 国产一区二区黑人欧美xxxx| 97香蕉久久夜色精品国产| 亚洲国产美女精品久久久久∴| 亚洲iv一区二区三区| 欧美富婆性猛交| 国内外成人免费激情在线视频| 亚洲精品久久久久久久久| 欧美亚洲视频在线看网址| 欧美日韩在线免费| 久久久久久久一区二区三区| 日韩欧美在线视频| 久久色免费在线视频| 国产精品久久久久aaaa九色| 情事1991在线| 91精品中国老女人| 欧美激情一区二区三级高清视频| 亚洲一二在线观看| 欧美一级大片在线观看| 日韩视频亚洲视频| 欧美—级a级欧美特级ar全黄| 亚洲一区二区中文字幕| 热99精品里视频精品| 久久久久久久久久国产精品| 国产精品7m视频| 精品女同一区二区三区在线播放| 亚洲美腿欧美激情另类| 性欧美暴力猛交69hd| 亚洲午夜色婷婷在线| 日韩精品日韩在线观看| 欧美成人在线免费视频| 久久视频在线观看免费| 国产精品一区二区三| 国产区精品视频| 欧美色图在线视频| 中文字幕v亚洲ⅴv天堂| 91wwwcom在线观看| 亚洲欧美精品一区| 精品无人区太爽高潮在线播放| 在线播放精品一区二区三区| 久热国产精品视频| 在线观看国产成人av片| 亚洲qvod图片区电影| 国产日韩精品在线观看| 亚洲人成在线免费观看| 日韩亚洲欧美中文在线| 青青草原一区二区| 欧美一级大片在线免费观看| 亚洲国语精品自产拍在线观看| 精品动漫一区二区三区| 国产精品久久久999| 91成人在线视频| 91日本在线观看| 日韩电影大全免费观看2023年上| 亚洲激情中文字幕| 精品中文字幕在线| 91成人在线视频| 精品亚洲男同gayvideo网站| 少妇高潮 亚洲精品| 欧美亚洲第一区| 亚洲第一福利网| 国产精品国模在线| 亚洲国产一区二区三区四区| 亚洲欧美日韩久久久久久| 国产69精品久久久| 91久久久久久久| 国产精品日韩欧美综合| 福利二区91精品bt7086| 18久久久久久| 日韩欧美一区二区三区久久| 国产精品自拍偷拍| 亚洲欧洲中文天堂| 777午夜精品福利在线观看| 成人性生交大片免费看视频直播| 国内精品久久久久久中文字幕| 亚洲网站在线看| 欧美成人国产va精品日本一级| 国产成人涩涩涩视频在线观看| 黑人巨大精品欧美一区二区一视频| 亚洲精品免费网站| 欧美精品午夜视频| 欧美高跟鞋交xxxxhd| 5566成人精品视频免费| 亚洲成人a**站| 欧美大尺度电影在线观看| 欧美成人精品一区二区| 国产精品国产自产拍高清av水多| 国产免费亚洲高清| 欧美中文在线免费| 日韩欧美亚洲范冰冰与中字| 精品国产精品三级精品av网址| 成人免费福利视频| 日韩视频免费大全中文字幕| 中文字幕日韩欧美在线视频| 97国产成人精品视频| 久久亚洲欧美日韩精品专区| 国产免费成人av| 欧美裸体xxxxx| 日韩精品极品在线观看播放免费视频| 国产精品成人久久久久| 蜜臀久久99精品久久久久久宅男| 国产视频精品自拍| 久久久在线视频| 日韩一区视频在线| 亚洲人成在线观| 国产精品高潮呻吟久久av野狼| 日本久久久久亚洲中字幕| 国产一区二区三区在线免费观看| 久久伊人免费视频| 国产精品视频白浆免费视频| 亚洲最新av在线网站| 久久久久久久久久久91| 欧美一级淫片播放口| 亚洲一区二区在线播放| 久久精品欧美视频| 91精品久久久久久久久久久久久| 亚洲全黄一级网站| 91亚洲精品视频| 国产剧情久久久久久| 久久免费视频这里只有精品| 中文字幕欧美亚洲| 欧美性生活大片免费观看网址| 久久精品美女视频网站| 亚洲va欧美va国产综合剧情| 日韩中文字幕网站| 亚洲精品一区二区网址| 丰满岳妇乱一区二区三区| 国产精品福利网| 欧美日韩亚洲一区二| 日韩一级黄色av| 中文字幕v亚洲ⅴv天堂| 国产亚洲激情在线| 亚洲第一黄色网| 狠狠躁夜夜躁人人躁婷婷91| 国产精品亚洲片夜色在线| 亚洲激情在线视频| 久久久视频在线| 欧美精品精品精品精品免费| 国产精品国产亚洲伊人久久| 亚洲第一精品福利| 精品一区二区三区三区| 欧美激情视频一区| 中文亚洲视频在线| 91av视频在线免费观看| 欧美激情一区二区三区久久久| 久久精品99久久久久久久久| 精品久久久久久久久久国产| 久久艳片www.17c.com| 97人人爽人人喊人人模波多| 日韩av免费在线观看| 亚洲男人天堂九九视频|