最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解final變量的初始化

 更新時(shí)間:2013年06月04日 16:47:21   作者:  
本篇文章是對final變量的初始化進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
final變量的初始化位置 
一是其定義處,也就是說在final變量定義時(shí)直接給其賦值,
二是在構(gòu)造函數(shù)中。而且在Java1.1以前,只能是在定義時(shí)給值。
三是在初如化代碼塊中{} 或者 static{}
復(fù)制代碼 代碼如下:

public class InitOrder {
    {
        System.out.println("before---field");
        //System.out.println("d1="+d1);
        d1 = 3;
        //System.out.println("d1="+d1);
    }
    static {
        System.out.println("before---static field");
        //System.out.println("d2="+d2);
        d2 = 3;
        //System.out.println("d2="+d2);
    }
    final int a1 = 1;
    final int b1;
    final int c1;
    final int d1;
    //final int e1;
    static final int a2 = 1;
    //static final int b2;
    static final int c2;
    static final int d2;
    //static final int e2;

    {
        System.out.println("after---field");
        //System.out.println("c1="+c1);
        c1 = 4;
        System.out.println("c1="+c1);
        //e2 =3;
    }
    static {
        System.out.println("after---static field");
        //System.out.println("c2="+c2);
        c2 = 4;
        System.out.println("c2="+c2);
        //e1 = 3;
    }
    public InitOrder() {
        b1 = 2;
        //b2 = 2;
    }
    public static void main(String[] args) {
        InitOrder order = new InitOrder();
        System.out.println("c1="+order.c1);
        System.out.println("c2="+order.c2);
        System.out.println("d1="+order.d1);
        System.out.println("d2="+order.d2);
    }
}

說明:上述所有注釋皆為有語法錯(cuò)誤
輸出結(jié)果:
before---static field
after---static field
c2=4
before---field
after---field
c1=4
c1=4
c2=4
d1=3
d2=3
結(jié)果分析:
1. 對比a1,a2基本沒有什么問題,定義時(shí)就初始化
2. 對比b1,b2在構(gòu)造函數(shù)中初始化,b1沒有問題,b2有問題,這是因?yàn)闃?gòu)造函數(shù)的調(diào)用在靜態(tài)變量的后面而b2是靜態(tài)的,所以會(huì)報(bào)錯(cuò)
3. 對比c1,d1發(fā)現(xiàn)初始化沒有問題,有問題的是使用輸出語句。對于d1在初始化代碼塊中不論在哪加輸出語句都會(huì)報(bào)錯(cuò),這是因?yàn)閐1所在的初始化代碼塊位置在變量d1定義的前面,而java中變量的初始化順序是見Java中變量的初始化順序, 普通變量和初始化代碼塊的初始化順序是按照位置的先后的所以輸出用到了d1變量,所以出錯(cuò),但有一點(diǎn)我不明白,為什么在這里初始化d1不報(bào)錯(cuò),而且在main函數(shù)中還可以調(diào)用它,難道這個(gè)也要去看一下java虛擬機(jī)?對于c1在后面加輸出語句沒有問題。前面加有問題很好理解,就是大之前沒有被初始化.
4. 對于c2,d2是和3同樣的道理
5. 對于e1放在靜態(tài)代碼塊中顯然不行,因?yàn)殪o態(tài)代碼塊最先加載,那時(shí)e1還沒有加
6. 對于e2也是,普通代碼塊的加載要晚于靜態(tài)變量,所以也是不行的。

相關(guān)文章

  • java代碼實(shí)現(xiàn)雙向鏈表

    java代碼實(shí)現(xiàn)雙向鏈表

    這篇文章主要為大家詳細(xì)介紹了java代碼實(shí)現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)

    Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)

    下面小編就為大家?guī)硪黄狫ava CGLib動(dòng)態(tài)代理機(jī)制(全面解析)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Mybatis插入語句默認(rèn)值不生效的問題及解決

    Mybatis插入語句默認(rèn)值不生效的問題及解決

    這篇文章主要介紹了Mybatis插入語句默認(rèn)值不生效的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 【面試】Spring事務(wù)面試考點(diǎn)吐血整理(建議珍藏)

    【面試】Spring事務(wù)面試考點(diǎn)吐血整理(建議珍藏)

    本文是小編給大家收藏整理的Spring事務(wù)面試考點(diǎn),非常不錯(cuò),值得收藏,感興趣的朋友參考下吧
    2019-04-04
  • java面向?qū)ο笾畬W(xué)生信息管理系統(tǒng)

    java面向?qū)ο笾畬W(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java面向?qū)ο笾畬W(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Java(springboot) 讀取txt文本內(nèi)容代碼實(shí)例

    Java(springboot) 讀取txt文本內(nèi)容代碼實(shí)例

    這篇文章主要介紹了Java(springboot) 讀取txt文本內(nèi)容代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java常見基本數(shù)據(jù)結(jié)構(gòu)概覽

    Java常見基本數(shù)據(jù)結(jié)構(gòu)概覽

    這篇文章主要介紹了Java常見的幾種基本數(shù)據(jù)結(jié)構(gòu),包括其含義和用法,,需要的朋友可以參考下
    2017-09-09
  • 詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑

    詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑

    這篇文章主要介紹了詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring?DI依賴注入過程解析

    Spring?DI依賴注入過程解析

    依賴注入是由“依賴”和“注入”兩個(gè)詞匯組合而成,那么我們再一次順藤摸瓜,分別分析這兩個(gè)詞語,這篇文章主要介紹了Spring?DI依賴注入詳解,需要的朋友可以參考下
    2022-11-11
  • Java實(shí)現(xiàn)單鏈表SingleLinkedList增刪改查及反轉(zhuǎn) 逆序等

    Java實(shí)現(xiàn)單鏈表SingleLinkedList增刪改查及反轉(zhuǎn) 逆序等

    單鏈表是鏈表的其中一種基本結(jié)構(gòu)。一個(gè)最簡單的結(jié)點(diǎn)結(jié)構(gòu)如圖所示,它是構(gòu)成單鏈表的基本結(jié)點(diǎn)結(jié)構(gòu)。在結(jié)點(diǎn)中數(shù)據(jù)域用來存儲(chǔ)數(shù)據(jù)元素,指針域用于指向下一個(gè)具有相同結(jié)構(gòu)的結(jié)點(diǎn)。 因?yàn)橹挥幸粋€(gè)指針結(jié)點(diǎn),稱為單鏈表
    2021-10-10

最新評論

南汇区| 观塘区| 无极县| 云阳县| 中方县| 都匀市| 西畴县| 班玛县| 东安县| 延吉市| 桐城市| 罗山县| 铜鼓县| 宾阳县| 报价| 扎赉特旗| 兴安盟| 华亭县| 荣成市| 库尔勒市| 丹凤县| 西青区| 治县。| 泰兴市| 普洱| 永州市| 壤塘县| 安丘市| 和田市| 辽阳市| 余干县| 台前县| 宜春市| 东平县| 北流市| 鄂州市| 贞丰县| 牙克石市| 蒙自县| 彭泽县| 尼玛县|