java類變量和對象變量的初始化問題

static final值聲明時必須給定初值
// final的static變量在類加載的準備階段就被賦予了給定的值,而且不再發生改變了,位置在方法區
//因爲static代碼塊的執行是在類加載的初始化階段,所以也不能改變final static變量的值
//static的非final變量可以在static代碼塊(初始化階段)改變值,其在準備階段已經賦過值(對應類型的零值),位置在方法區
//非static的變量,在類加載時並沒有生成,它是跟隨對象在實例化時在java堆分配資源
// 對象的final變量可以在聲明時給定值,也可以在構造函數裏賦值,但兩者有且只能有一個,否則編譯報錯
// 前者早於後者,兩者都有時後者編譯報錯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章