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函式
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- static程式碼塊、構造程式碼塊、建構函式以及Java類初始化順序C程式函式Java
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- java中的程式碼塊(初始化塊)Java
- 域初始化、靜態塊及構造方法等在建立類例項時的執行順序 (轉)構造方法
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- C++中建構函式後的初始化列表C++函式
- C++——建構函式之初始化列表C++函式
- C++建構函式初始化順序C++函式
- Java static變數、作用域、建構函式初始化順序Java變數函式
- 淺談Java中的例項初始化器Java
- javascript中初始化建構函式時new所起的作用JavaScript函式
- java 例項變數初始化Java變數
- Java靜態程式碼塊Java
- 從例項出發,瞭解單例模式和靜態塊單例模式
- C#例項建構函式C#函式
- 來說說 Java 中的例項初始化器Java
- 來說說Java中的例項初始化器Java
- java程式碼初始化塊指的是什麼Java
- C++ 類建構函式初始化列表介紹C++函式
- Java類初始化和例項化Java
- 靜態程式碼塊、構造程式碼塊、構造方法構造方法
- 靜態變數和例項變數區別?變數
- Java中構造方法,構造程式碼塊和靜態程式碼塊執行順序詳解Java構造方法
- C#靜態建構函式及靜態變數學習C#函式變數
- css樣式初始化程式碼例項CSS
- 樣式初始化程式碼例項分享
- C# 建構函式 (初始化成員變數的角色)C#函式變數
- 建構函式與普通函式的區別函式
- Java中靜態跟非靜態的區別總結Java
- Java靜態變數塊使用案例Java變數
- 私有建構函式的物件建立例項函式物件
- C++ 結構體例項和類例項的初始化C++結構體
- JavaScript建構函式和普通函式的區別JavaScript函式
- c++中使用建構函式初始化列表的情況C++函式
- golang中的init初始化函式Golang函式