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

Java 程序初始化順序

 更新時(shí)間:2022年01月13日 10:31:01   作者:.小柱.  
這篇文章主要介紹了Java 程序初始化順序,在Java語(yǔ)言中,當(dāng)實(shí)例化對(duì)象時(shí),對(duì)象所在類(lèi)的所有成員變量首先要進(jìn)行初始化,只有當(dāng)所有的類(lèi)成員完成了初始化之后,才會(huì)調(diào)用對(duì)象所在類(lèi)的構(gòu)造函數(shù)創(chuàng)建對(duì)象,需要的朋友可以參考一下

Java程序的初始化一般遵循三個(gè)原則(優(yōu)先級(jí)依次遞減):

  • 1,靜態(tài)對(duì)象(變量)優(yōu)先于非靜態(tài)對(duì)象(變量)初始化,其中,靜態(tài)對(duì)象(變量)只初始化一次,而非靜態(tài)對(duì)象(變量)可能會(huì)初始化很多次。
  • 2,父類(lèi)優(yōu)先于子類(lèi)進(jìn)行初始化。
  • 3,按照成員變量的定義順序進(jìn)行初始化。即使變量定義散布于方法定義之中,它們依然在任何方法被調(diào)用之前先初始化。

Java程序初始化工作可以在許多不同的代碼塊中完成(例如靜態(tài)代碼塊,構(gòu)造函數(shù)等),它們的執(zhí)行順序如下:

  1. 父類(lèi)靜態(tài)變量
  2. 父類(lèi)靜態(tài)代碼塊
  3. 子類(lèi)靜態(tài)變量
  4. 子類(lèi)靜態(tài)代碼塊
  5. 父類(lèi)非靜態(tài)變量
  6. 父類(lèi)非靜態(tài)代碼塊
  7. 父類(lèi)構(gòu)造函數(shù)
  8. 子類(lèi)非靜態(tài)變量
  9. 子類(lèi)非靜態(tài)代碼塊
  10. 子類(lèi)構(gòu)造函數(shù)。

下面給出一個(gè)不同模塊初始化時(shí)執(zhí)行順序的一個(gè)例子:

class Base{
? ? ? ? ? ?static {
? ? ? ? ? ? ? ? System.out.println("Base static block");

? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ?public Base(){
? ? ? ? ? ?System.out.println("Base constructor");

? ? ? ? ? ?}

?public class Derived extends Base{
? ? ? ? ? ?static{
? ? ? ? ? System.out.println("Drevied static block");

? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? {
? ? ? ? ? System.out.println("Drevied ?block");

? ? ? ? ? ?}

?public ?Derived(){
? ? ? ? ? System.out.println("Drevied ?constructor");

? ? ? ? ? }

public static void main(String args[]){
? ? ? ? ? ? ? ? new Derived();

? ? ? ? ? }

? ? ? ? ? }

先自己利用上面給出的執(zhí)行順序進(jìn)行判斷:

程序的運(yùn)行結(jié)果為:

Base static block

Derived static block

Base block

Base constructor

Derived block

Derived constructor

怎么樣,運(yùn)行結(jié)果是否與你的結(jié)果一致呢?

最后,我們?cè)賮?lái)看一道面試真題:

下列代碼運(yùn)行結(jié)果是什么?

? class B extends Object{
? ? ? ? ? static{
? ? ? ? ? System.out.println("Load B1");

? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ?public ?B(){
? ? ? ? ? System.out.println("Create B");

? ? ? ? ? }

? ? ? ? ? ?static{
? ? ? ? ? System.out.println("Load B2");

? ? ? ? ? ?}

? ? ? ? ? ?}

class A extends B{
? ? ? ? ? static{
? ? ? ? ? System.out.println("Load A");

? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ?public ?A(){
? ? ? ? ? System.out.println("Create A");

? ? ? ? ? }

? ? ? ? ? }

? ? ? ? ? public class Testclass{
? ? ? ? ? public static void main(String[ ] args){
? ? ? ? ? ? ? ? ? ? ? ? new A();

? ? ? ? ? }

? ? ? ? ? }

運(yùn)行結(jié)果是:

Load B1      LoadB2      Load A     Create B     Create A

在面試中出現(xiàn)的執(zhí)行順序的問(wèn)題,無(wú)非也就是把上面的代碼再換幾個(gè)形式,但,萬(wàn)變不離其宗,只要掌握它的執(zhí)行順序的規(guī)律,所有問(wèn)題就都可以迎刃而解了

到此這篇關(guān)于Java 程序初始化順序的文章就介紹到這了,更多相關(guān)Java程序初始化順序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java內(nèi)存模型JMM詳解

    Java內(nèi)存模型JMM詳解

    這篇文章主要介紹了Java內(nèi)存模型JMM詳解,涉及volatile和監(jiān)視器鎖,final字段,內(nèi)存屏障等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • java將圖片轉(zhuǎn)為base64返回給前端

    java將圖片轉(zhuǎn)為base64返回給前端

    這篇文章主要為大家詳細(xì)介紹了java將圖片轉(zhuǎn)為base64返回給前端,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Java service層獲取HttpServletRequest工具類(lèi)的方法

    Java service層獲取HttpServletRequest工具類(lèi)的方法

    今天小編就為大家分享一篇關(guān)于Java service層獲取HttpServletRequest工具類(lèi)的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Java通過(guò)SSM完成水果商城批發(fā)平臺(tái)流程

    Java通過(guò)SSM完成水果商城批發(fā)平臺(tái)流程

    這是一個(gè)使用了java+SSM開(kāi)發(fā)的網(wǎng)上水果商城批發(fā)平臺(tái),是一個(gè)實(shí)戰(zhàn)小練習(xí),具有水果商城批發(fā)該有的所有功能,感興趣的朋友快來(lái)看看吧
    2022-06-06
  • SpringBoot整合OpenCV的實(shí)現(xiàn)示例

    SpringBoot整合OpenCV的實(shí)現(xiàn)示例

    這篇文章主要介紹了SpringBoot整合OpenCV的實(shí)現(xiàn)示例。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBootTest--踩坑錯(cuò)誤的解決

    SpringBootTest--踩坑錯(cuò)誤的解決

    這篇文章主要介紹了SpringBootTest--踩坑錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot使用消息中間件

    springboot使用消息中間件

    這篇文章主要介紹了springboot使用消息中間件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • spring-data-redis自定義實(shí)現(xiàn)看門(mén)狗機(jī)制

    spring-data-redis自定義實(shí)現(xiàn)看門(mén)狗機(jī)制

    redission看門(mén)狗機(jī)制是解決分布式鎖的續(xù)約問(wèn)題,本文主要介紹了spring-data-redis自定義實(shí)現(xiàn)看門(mén)狗機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • java中hashmap容量的初始化實(shí)現(xiàn)

    java中hashmap容量的初始化實(shí)現(xiàn)

    這篇文章主要介紹了java中hashmap容量的初始化實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java精品項(xiàng)目瑞吉外賣(mài)之新增菜品與分頁(yè)查詢(xún)篇

    Java精品項(xiàng)目瑞吉外賣(mài)之新增菜品與分頁(yè)查詢(xún)篇

    這篇文章主要為大家詳細(xì)介紹了java精品項(xiàng)目-瑞吉外賣(mài)訂餐系統(tǒng),此項(xiàng)目過(guò)大,分為多章獨(dú)立講解,本篇內(nèi)容為新增菜品和分頁(yè)查詢(xún)功能的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論

崇义县| 广南县| 博客| 康马县| 陕西省| 威宁| 石河子市| 三穗县| 四会市| 仙居县| 牙克石市| 乌拉特中旗| 无锡市| 彰武县| 腾冲县| 高安市| 英山县| 平遥县| 乌恰县| 青神县| 安泽县| 略阳县| 化德县| 舟曲县| 南华县| 三亚市| 盐亭县| 本溪市| 焦作市| 曲阳县| 吉安县| 石泉县| 浦江县| 青海省| 霞浦县| 来凤县| 海晏县| 门源| 淄博市| 千阳县| 鱼台县|