本文目錄一覽:
- 1、java中的靜態代碼塊、代碼塊、構造器的執行順序是怎樣呢,這三者有什麼作用呢
- 2、Java構造函數,構造代碼塊和靜態代碼塊的區別
- 3、java中靜態代碼塊和構造代碼塊的區別
- 4、java中詳解靜態代碼塊,構造代碼塊,構造方法。求簡單易懂的解釋
java中的靜態代碼塊、代碼塊、構造器的執行順序是怎樣呢,這三者有什麼作用呢
先說執行順序:我們在new一個對象時,如果類還沒加載,就需要先將類加載到內存,此時就會執行靜態代碼塊,在創建對象時,是先執行代碼塊,然後執行構造器。所以靜態代碼塊、代碼塊、構造器的執行順序是:靜態代碼塊→代碼塊→構造器。
再說作用:靜態代碼塊是用於初始化類的(在加載類時執行,只執行一次),代碼塊是用於初始化對象的(在創建對象時執行,每次創建對象時都執行),構造器是用於創建對象的。
Java構造函數,構造代碼塊和靜態代碼塊的區別
構造函數:執行時間比構造代碼塊時間晚,也是在對象初始化的時候運行。沒有返回值,構造函數名稱和類名一致。
構造代碼塊:執行時間比靜態代碼塊晚,比構造函數早,和構造函數一樣,只在對象初始化的時候運行。沒有名字、參數和返回值。
靜態代碼塊:最早執行,類被載入內存時執行,只執行一次。沒有名字、參數和返回值,有關鍵字static。
靜態代碼塊只會在類被載入內存時加載一次,是最先執行的,然後是構造代碼塊,最後才是構造函數。構造代碼塊和構造函數都是在對象創建的時候執行,有幾個對象就會執行幾次。
java中靜態代碼塊和構造代碼塊的區別
直接在類中定義且沒有加static關鍵字的代碼塊稱為{}構造代碼塊。構造代碼塊在創建對象時被調用,每次創建對象都會被調用,並且構造代碼塊的執行次序優先於類構造函數。
靜態代碼塊:在java中使用static關鍵字聲明的代碼塊。靜態塊用於初始化類,為類的屬性初始化。每個靜態代碼塊只會執行一次。由於JVM在加載類時會執行靜態代碼塊,所以靜態代碼塊先於主方法執行。
注意:1 靜態代碼塊不能存在於任何方法體內。2 靜態代碼塊不能直接訪問靜態實例變量和實例方法,需要通過類的實例對象來訪問。
java中詳解靜態代碼塊,構造代碼塊,構造方法。求簡單易懂的解釋
靜態代碼塊:只要一用到某個類,那麼這個類的靜態代碼塊就先執行,比如:
public class Dog(){
int i = 0;
static {
i = 1;
}
public Dog(){
i = 2;
}
}當你new 一個Dog()對象時,首先i=
1 會執行,然後才執行
public Dog(){}這個方法。
pulic
Dog() 是與類同名、沒有返回值的方法,也就是構造方法。
構造方法的作用是用來初始化一個對象的。比如你可以在裡面寫
i
=
2;
那麼當你 Dog
d
=
new
Dog()執行這段代碼的時候,是這樣的:
首先
i
=
;
然後執行static 靜態代碼塊,此時i=
1;
最後執行public
Dog();
i
=
2;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/289005.html