java基礎---初始化塊__java基礎學習

來源:互聯網
上載者:User
一、概念 
作用:與構造器作用非常類似的是初始化塊,它也可以對Java對象進行初始化操作。 
性質:是Java類裡可出現的第4種成員(Field、方法和構造器),它沒有名字,也沒有標識,因此無法通過類、對象類調用初始化塊。初始化塊只在建立Java對象時隱式執行,而且在執行建構函式之前執行。 
 
二、使用 
文法格式: 
[修飾符]{ 
//初始化塊的可執行代碼 

 
修飾符只能是static,使用static修飾的初始化塊稱為靜態初始化塊 
初始化塊裡的代碼可以包含任何可執行語句,包括定義局部變數、調用其他對象的方法、以及使用分支、迴圈語句等。 
 
三、初始化塊和構造器 
從某種程度上來看,初始化塊是構造器的補充,初始化塊總是在構造器之前執行。 
與構造器區別:初始化塊是一段固定執行的代碼,它不能接受任何參數。因此初始化塊對同一個類的所有對象所進行的初始化處理完全相同。 
 
使用情境:如果有一段初始化處理代碼對所有的對象完全相同,且無需接受任何參數,就可以把這段初始化處理代碼提取到初始化塊中。 
使用好處:通過把多個構造器中的相同代碼提取到初始化塊中定義,能更好地提高初始化代碼的複用。 
 
四、靜態初始化塊 
靜態初始化塊是類相關的,系統將在類初始化階段執行靜態初始化塊,而不是在建立對象時才執行,因此靜態初始化塊總是比普通初始化塊先執行; 
它通常對類Field執行初始化處理,不能對執行個體Field進行初始化處理; 
屬於類的靜態成員,不能訪問非靜態成員; 
 
五、執行順序 
一個類中可以有多個構造器,相同類型的初始化塊之間有順序:前面定義的初始化塊先執行,後面定義的初始化塊後執行; 
普通初始化塊、聲明執行個體Field指定的預設值都可以認為是對象的初始化代碼,它們的執行順序與來源程式中的排列順序相同; 
建立一個Java對象時,不僅會執行該類的普通初始化塊和構造器,而且系統會一直上溯到Java.lang.Object類,先執行Java.lang.Object類的初始化塊,開始執行Java.lang.Object的構造器,依次向下執行其父類的初始化塊,開始執行其父類的構造器... …最後才執行該類的初始化塊和構造器,返回該來的對象。 
系統在類初始化階段執行靜態初始化塊時,不僅會執行本類的靜態初始化塊,而且會一直上溯上Java.lang.Object類(如果它也包含靜態初始化塊),先執行Java.lang.Object類的靜態初始化塊(如果有),然後執行父類的靜態初始化快... …最後才執行該類的靜態初始化塊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.