課程
/后端開發
/Java
/Java入門第二季 升級版
static{
age=17;
}
{
2018-08-14
源自:Java入門第二季 升級版 8-10
正在回答
我想你應該不會把這個兩個寫到一個類下面。所以你的問題是,這兩種寫法有什么區別?
static 修飾的代碼塊在類加載的時候就被分配到內存中了(注意類加載不是new操作,這時候還沒有對象,簡單地說就是你把這個類放到內存中去,之后產生出來的對象(比如new一個對象出來)都是共用的這部分內存區的數據)。所以只會調用一次。與對象沒有關系!
而非static修飾的代碼塊在你產生每個對象的時候都會調用一次。
說的比較淺,如果你感興趣,建議看看JVM相關知識。
qq_大魔王_23 提問者
mark
類加載時代碼塊執行順序不一樣,順序是靜態代碼塊,普通代碼塊,構造方法代碼塊。你這輸出結果一樣,你賦值的是同一個屬性age,后來運行的普通代碼塊把你靜態代碼塊賦值給覆蓋了
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
2 回答為什么我在輸出時System.out.println(className);結果是一樣的
1 回答輸不出結果
3 回答怎么沒有輸出結果啊
4 回答finnal跟static有什么區別呢?
2 回答為什么不能輸出結果呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-08-19
我想你應該不會把這個兩個寫到一個類下面。所以你的問題是,這兩種寫法有什么區別?
static 修飾的代碼塊在類加載的時候就被分配到內存中了(注意類加載不是new操作,這時候還沒有對象,簡單地說就是你把這個類放到內存中去,之后產生出來的對象(比如new一個對象出來)都是共用的這部分內存區的數據)。所以只會調用一次。與對象沒有關系!
而非static修飾的代碼塊在你產生每個對象的時候都會調用一次。
說的比較淺,如果你感興趣,建議看看JVM相關知識。
2018-10-23
mark
2018-08-14
類加載時代碼塊執行順序不一樣,順序是靜態代碼塊,普通代碼塊,構造方法代碼塊。你這輸出結果一樣,你賦值的是同一個屬性age,后來運行的普通代碼塊把你靜態代碼塊賦值給覆蓋了