国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java之初始化順序?qū)嵺`

這篇具有很好參考價(jià)值的文章主要介紹了Java之初始化順序?qū)嵺`。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

功能概述

  • 在創(chuàng)建Java對象時(shí),需要將對象中的成員變量進(jìn)行初始化后,才能調(diào)用對象的構(gòu)造方法創(chuàng)建對象。本文中將會(huì)講解初始化時(shí)父類與子類對應(yīng)的順序。

功能實(shí)踐

場景1:父類、子類的初始化順序

用例代碼
@Test
public void test_init_order() {
    new Child();
}

public class Parent {
    static {
        System.out.println("父類靜態(tài)塊");
    }

    {
        System.out.println("父類非靜態(tài)塊");
    }

    public Parent() {
        System.out.println("父類構(gòu)造方法");
    }
}

public class Child extends Parent {

    static {
        System.out.println("子類靜態(tài)塊");
    }

    {
        System.out.println("子類非靜態(tài)塊");
    }

    public Child() {
        System.out.println("子類構(gòu)造方法");
    }
}
結(jié)果輸出
父類靜態(tài)塊
子類靜態(tài)塊
父類非靜態(tài)塊
父類構(gòu)造方法
子類非靜態(tài)塊
子類構(gòu)造方法
結(jié)果分析
  • 先初始化靜態(tài)塊:父類的靜態(tài)塊 -> 子類的靜態(tài)塊。
  • 再初始化非靜態(tài)塊以及構(gòu)造方法:
    • 父類的非靜態(tài)塊 -> 父類的構(gòu)造方法
    • 子類的非靜態(tài)塊 -> 子類的構(gòu)造方法

場景2:塊、成員域中初始化順序

用例代碼
static {a = 2;} //靜態(tài)塊中初始化
static int a = 1; //成員域中初始化
static int b = 3;

static {b = 4;}

{c = 5;} //可以放在聲明的上面
int c = 3;

@Test
public void test_order() {
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
}
結(jié)果輸出
1
4
3
結(jié)果分析
  • 塊中的初始化與成員域中的初始化是平級的,所以會(huì)按照從上到下初始化,最后一次初始化為最終的值。

場景3:靜態(tài)變量的調(diào)用

用例代碼
@Test
public void test_static_var() {
    System.out.println(InitB.c);
}

public class InitA {
    public static String c = "C";
    static {
        System.out.println("A");
    }
}

public class InitB extends InitA {
    static {
        System.out.println("B");
    }
}

用例輸出
A
C
結(jié)果分析
  • 因?yàn)檎{(diào)用InitB.c,static變量c在A類中,所以會(huì)加載父類A,所以輸出了靜態(tài)塊中的"A"。
  • 因?yàn)镮nitB.c直接訪問InitA的變量,不需要訪問InitB中的其它內(nèi)容,所以就不要加載InitB了。

功能總結(jié)

  • 初始化時(shí),執(zhí)行的順序?yàn)椋焊割愳o態(tài)變量 -> 父類靜態(tài)代碼塊 -> 子類靜態(tài)變量 -> 子類靜態(tài)代碼塊 -> 父類非靜態(tài)變量 -> 父類非靜態(tài)代碼塊 -> 父類構(gòu)造方法 -> 子類非靜態(tài)變量 -> 子類的非靜態(tài)代碼塊 -> 子類構(gòu)造方法。

文章來源地址http://www.zghlxwxcb.cn/news/detail-682324.html

到了這里,關(guān)于Java之初始化順序?qū)嵺`的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java中初始化數(shù)組的方法

    方式一: 注:此種方式創(chuàng)建的數(shù)組,如不顯式初始化數(shù)組元素,則各元素為當(dāng)前數(shù)據(jù)類型的默認(rèn)值。基本數(shù)據(jù)類型為0,對象類型為null。所以使用前需要將各元素顯式賦值。 方式二: 注:此方式與方式一的結(jié)果相同,但是更簡便。 方式三: 注:此方式與方式一和方式二的結(jié)

    2024年02月12日
    瀏覽(24)
  • Java集合類型對象的快速初始化

    在Java中, 集合類型的對象初始化, 一般是先創(chuàng)建對象, 然后往集合里面增加元素,這種寫法直觀,但是撰寫代碼的時(shí)候感覺比較冗余, 是否有什么酷炫的方式簡化定義初始化呢? 本篇介紹字符串?dāng)?shù)組、List 和 Map類型對象的定義初始化簡單方式。 常用的寫法: 簡化的寫法

    2024年02月06日
    瀏覽(40)
  • Java中Map集合初始化并賦值

    Java中Map集合初始化并賦值的幾種方式:

    2024年02月11日
    瀏覽(20)
  • 【Java】構(gòu)造方法及類的初始化

    【Java】構(gòu)造方法及類的初始化

    活動(dòng)地址:CSDN21天學(xué)習(xí)挑戰(zhàn)賽 ? 博客主頁: XIN-XIANG榮 ? 系列專欄: 【Java SE】 ? 一句短話: 難在堅(jiān)持,貴在堅(jiān)持,成在堅(jiān)持! 構(gòu)造方法(也稱為構(gòu)造器)是一個(gè)特殊的成員方法,其名字必須與類名相同,在創(chuàng)建對象時(shí),由編譯器自動(dòng)調(diào)用,并且在整個(gè)對象的生命周期內(nèi)只調(diào)用一次。

    2023年04月10日
    瀏覽(17)
  • Java HashMap初始化大小設(shè)置多少合適

    Java HashMap初始化大小設(shè)置多少合適

    修改公司老代碼的時(shí)候,發(fā)現(xiàn)阿里編碼規(guī)約插件提示HashMap初始化時(shí)盡量指定初始值大小,因?yàn)樵O(shè)置合理的初始值可以提升性能: ? HashMap繼承自AbstractMap類,實(shí)現(xiàn)了Map、Cloneable、java.io.Serializable接口 , 是基于散列表實(shí)現(xiàn)的雙列集合,它存儲(chǔ)的是key-value鍵值對映射,每個(gè)key-va

    2024年02月09日
    瀏覽(18)
  • 數(shù)據(jù)結(jié)構(gòu)與算法——順序表(順序存儲(chǔ)結(jié)構(gòu))及初始化詳解

    數(shù)據(jù)結(jié)構(gòu)與算法——順序表(順序存儲(chǔ)結(jié)構(gòu))及初始化詳解

    順序表 ,全名 順序存儲(chǔ)結(jié)構(gòu) ,是線性表的一種。通過《什么是線性表》一節(jié)的學(xué)習(xí)我們知道,線性表用于存儲(chǔ)邏輯關(guān)系為“一對一”的數(shù)據(jù),順序表自然也不例外。 不僅如此,順序表對數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)也有要求。 順序表存儲(chǔ)數(shù)據(jù)時(shí),會(huì)提前申請一整塊足夠大小的物理

    2024年02月16日
    瀏覽(31)
  • Java開源項(xiàng)目mall學(xué)習(xí)筆記(1)——項(xiàng)目初始化

    Java開源項(xiàng)目mall學(xué)習(xí)筆記(1)——項(xiàng)目初始化

    ????????該筆記是記錄學(xué)習(xí)開源項(xiàng)目mall過程的文檔筆記,完全原創(chuàng),轉(zhuǎn)載請聲明。同時(shí)也對開源項(xiàng)目的作者表示感謝! mall: ?? mall項(xiàng)目是一套基于 SpringBoot + Vue + uni-app 實(shí)現(xiàn)的電商系統(tǒng),包括前臺(tái)商城項(xiàng)目及后臺(tái)管理系統(tǒng),采用Docker容器化部署。前臺(tái)商城系統(tǒng)包含首頁門戶

    2024年02月12日
    瀏覽(21)
  • Java 中 Map 初始化的幾種方法

    方式1:傳統(tǒng)方式 方式2:java8新特性-雙括號(hào)初始化 匿名內(nèi)部類通常會(huì)導(dǎo)致內(nèi)存泄漏問題,因?yàn)樗鼤?huì)隱式地持有外部類的引用,如果外部類的引用一直存在而沒有釋放,它所持有的內(nèi)存也就不會(huì)被垃圾回收機(jī)制回收,產(chǎn)生內(nèi)存泄漏。而通過使用靜態(tài)內(nèi)部類或者弱引用等技術(shù)可以

    2024年02月05日
    瀏覽(23)
  • Spring初始化順序- RabbitMq 無法自動(dòng)創(chuàng)建隊(duì)列

    Spring初始化順序- RabbitMq 無法自動(dòng)創(chuàng)建隊(duì)列

    項(xiàng)目中使用了RabbitMq, 并配置了自動(dòng)創(chuàng)建topic, exchange,binding 等,但是通過測試發(fā)現(xiàn),有一個(gè)隊(duì)列始終無法自動(dòng)創(chuàng)建,在對spring 源碼以及rabbitmq 源碼debug 后發(fā)現(xiàn)問題。 rabbitmq 配置了兩套環(huán)境 , 以下為代碼示例 Queue, Exchange, Binding 自動(dòng)生成配置: 通過運(yùn)行項(xiàng)目,發(fā)現(xiàn)隊(duì)列,交換機(jī)

    2024年02月13日
    瀏覽(35)
  • 順序表創(chuàng)建,初始化,賦值,取值,查找,插入與刪除(附小例題)

    由n(n≥0)個(gè)數(shù)據(jù)結(jié)構(gòu)相同的元素構(gòu)成的有限序列。 1)除了第一個(gè)元素外,結(jié)構(gòu)中的每一個(gè)數(shù)據(jù)元素均只有一個(gè)前驅(qū) 2)除了最后一個(gè)元素外,結(jié)構(gòu)中的每一個(gè)數(shù)據(jù)元素均只有一個(gè)后驅(qū) 用一組地址 連續(xù)的存儲(chǔ)單元依次 存儲(chǔ)線性表的數(shù)據(jù)元素。 優(yōu)點(diǎn) : 隨機(jī)存儲(chǔ) 缺點(diǎn) :在做插

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包