Java靜態初始化,執行個體初始化以及構造方法

來源:互聯網
上載者:User

標籤:

首先有三個概念需要瞭解:

一.靜態初始化:是指執行靜態初始化塊裡面的內容。

二.執行個體初始化:是指執行執行個體初始化塊裡面的內容。

三.構造方法:一個名稱跟類的名稱一樣的方法,特殊在於不帶傳回值。

我們先來看一段程式結果:

    package com;     class Book{          public static int booksum=0;//靜態變數              static{//這是靜態初始化塊         print();                  System.out.println("this is static block");              }              {//執行個體初始化塊                  System.out.println("初始化塊:"+booksum);              }              public Book(){//構造方法                  System.out.println("this is Book‘s constructor~");                  booksum+=1;              }              public static void print(){//靜態方法                  System.out.println("this is static method~");              }          public static void main(String []args){             //Book book=new Book();         }     }

 

   

執行結果:

this is static method~

this is static block

如果把 

public static void main(String []args){         //Book book=new Book();       }

 

   

的注釋去掉的話,運行結果為:

this is static method~

this is static block

初始化塊:0

this is Book‘s constructor~

總結:

僅從代碼執行的角度來探討Java載入類、建立對象的過程,並沒有深入到JVM的機制中去。

1.一個對象第一次被建立時,先要載入該對象所屬的類,即對應的.class檔案,當然如果類已經載入,再次建立該類的對象時,就不再需要重新載入類了。而一個類載入的時候,有三個部分需要載入,一個是靜態變數,再然後是靜態方法,然後是靜態初始化塊。 (見到第一次執行結果就知道了,由於沒有建立執行個體所以初始化塊不執行)

2.然後開始建立該類的執行個體了,當然如果靜態方法跟靜態初始化對象中有對象的建立時,就繼續載入該對象的類,當然已經載入了該對象的類的話就不需要再次加 載了。那麼對象執行個體的建立過程是什麼呢?首先是成員變數的引入,然後是執行個體初始化塊,之後才是構造方法,構造方法執行完成之後才算把這個對象給建立出來了。

在這個過程中,真正可以編寫執行代碼的地方有三個,靜態初始化、執行個體初始化以及構造方法。從以上的分析中我們可以看到,這三個代碼塊的執行順序是先類的靜態初始化,再執行個體初始化,最後執行構造方法。也就是說,靜態初始化是屬於類載入的過程,所以它只執行一次,而執行個體初始化是每個對象建立時都會執行一次,而構造方法跟執行個體初始化其實也差不多,不過它在執行個體初始化之後執行,而且構造方法可以重載多個,執行哪個構造方法是根據你的選擇來的。

可以把main () 函數加一條語句看看:

    public static void main(String []args){         Book book=new Book();         Book book1=new Book();      }

 

   

此時執行結果為:

this is static method~

this is static block

初始化塊:0

this is Book‘s constructor~

初始化塊:1

this is Book‘s constructor~

這說明執行個體初始化是每個對象建立時都會執行的。

Java靜態初始化,執行個體初始化以及構造方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.