非靜態初始化塊會在每個物件生成時被執行一次,可以初始化類的例項變數。非靜態初始化塊會在建構函式執行時,在建構函式主體**執行之前被執行。
靜態初始化塊會在物件裝載到系統的時候執行一次,它僅能初始化類變數,即static修飾的資料成員。
class helloa
public
helloa(int a)
static
}public
class
hellob
extends
helloa
public
hellob(int a)
static
public
static
void
main(string args)
}/* new hellob()初始化順序:
* 父類靜態初始化塊->子類靜態初始化塊->父類非靜態初始化塊->父類無參構造方法->子類非靜態初始化塊->子類無參構造方法
* output:
static a
static b
i'm a class
helloa
i'm b class
hellob
*new hellob(1)初始化順序:
父類靜態初始化塊->子類靜態初始化塊->父類非靜態初始化塊->父類無參構造方法->子類非靜態初始化塊->子類有參構造方法
output:
static a
static b
i'm a class
helloa
i'm b class
hellob(int a)=》a:1
~*/
java基礎 初始化塊
加了static就是靜態初始化塊。靜態初始化塊只能呼叫靜態資源。沒有加static修飾符的就是普通初始化 塊。new乙個實力物件時,先執行初始化塊,在執行建構函式。靜態只在載入類的時候執行一次,普通 塊在new物件時每次都會呼叫。補充知識點 1.new乙個物件時會先載入類資訊,類資訊載入後在建立例項...
初始化塊和靜態初始化塊
初始化塊的使用 變數,靜態變數,方法,靜態方法 由圖可知變數沒問題 上面的方法不可行能否初始化靜態方法 嘗試使用初始化塊初始化構造方法 最後比較一下構造方法初始化,初始化塊初始化,靜態初始化塊初始化當中誰最先被初始化 package staticinitializelump public class...
java中靜態初始化塊,例項初始化塊,建構函式區別
public class people public people string name param args public static void main string args 執行效果 new兩個例項,從執行結果可以看出,靜態變數和靜態初始化塊都是在類載入到系統時,載入到系統中,靜態初始化...