java中靜態初始化塊,例項初始化塊,建構函式區別
public class People
{
public static int num=0;//靜態變數
String name;
static//靜態初始化塊
{
System.out.println(num+":靜態初始化塊");
}
{//例項初始化塊
System.out.println(num+":例項初始化塊");
}
public People(String name)
{
System.out.println(num+":建構函式初始化");
this.name=name;
num++;
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
People people=new People("lip");
People people2=new People("xiaoli");
}
}
執行效果:
new兩個例項,從執行結果可以看出,靜態變數和靜態初始化塊都是在類載入到系統時,載入到系統中,靜態初始化塊只執行一次,例項初始化塊和建構函式都是執行兩次,也就是說,有一個物件就執行一次例項初始化塊和建構函式。 三個的執行順序也顯而易見:靜態初始化塊 -例項初始化塊- 建構函式
在eclipse中開啟編譯的People.class如下圖所示:
0 iconst_0 這個是將靜態變數載入到記憶體中
20 ldc <String ":靜態初始化塊"> [32] 執行靜態初始化塊,只載入一次到記憶體
相關文章
- Java中靜態程式碼塊、構造程式碼塊、建構函式、普通程式碼塊Java函式
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- static程式碼塊、構造程式碼塊、建構函式以及Java類初始化順序C程式函式Java
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- java中的程式碼塊(初始化塊)Java
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- C++——建構函式之初始化列表C++函式
- Java static變數、作用域、建構函式初始化順序Java變數函式
- 從例項出發,瞭解單例模式和靜態塊單例模式
- Java類初始化和例項化Java
- javascript中初始化建構函式時new所起的作用JavaScript函式
- Java靜態程式碼塊Java
- C++ 類建構函式初始化列表介紹C++函式
- 程式碼初始化塊
- java程式碼初始化塊指的是什麼Java
- 私有建構函式的物件建立例項函式物件
- C# 建構函式 (初始化成員變數的角色)C#函式變數
- 建構函式與普通函式的區別函式
- 例項物件和函式物件的區別物件函式
- Java中構造方法,構造程式碼塊和靜態程式碼塊執行順序詳解Java構造方法
- 理清原型物件、 例項物件、建構函式原型物件函式
- Java中靜態跟非靜態的區別總結Java
- c++中使用建構函式初始化列表的情況C++函式
- 用懶載入等函式式思想重構Java的初始化函式Java
- golang中的init初始化函式Golang函式
- 區域性靜態變數的初始化觀測變數
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- Java 建構函式與修飾符詳解:初始化物件與控制許可權Java函式物件
- C++ 建構函式 explicit 關鍵字 成員初始化列表C++函式
- 類的陣列初始化後會呼叫拷貝建構函式陣列函式
- Java初始化靜態變數的時間順序Java變數
- 靜態程式碼塊
- 例項 靜態 類
- 你真的瞭解靜態方法與例項方法的區別麼?
- 靜態方法和例項方法的區別以及如何恰當使用
- 類靜態初始化塊即將納入ES2022,我們先一睹為快
- 對於靜態成員來說是類的建構函式,對於例項成員是類的原型物件。函式原型物件
- 初識區塊鏈 - 用JS構建你自己的區塊鏈區塊鏈JS
- 基於Java語言構建區塊鏈(四)—— 交易(UTXO)Java區塊鏈