Java基礎(9) - 靜態、代碼塊

關鍵字
加載順序 、類初始化 、方法區、進程

存在作用:
變量 -> 全局共享 (跨線程,但不支持跨進程)
方法 -> 不用類實例就能直接使用,避免New的消耗。(爲什麼靜態方法不能訪問非靜態變量)
代碼塊 -> 靜態塊在類初始化就運行 ,初始化順序 靜態代碼塊 -> 普通代碼塊 -> 構造方法 -> 普通方法,代碼塊只會初始化一次
導包 -> 靜態導包,將類的方法直接導入到當前類中,從而直接使用“方法名”即可調用類方法,更加方便。

類加載:

靜態屬性和非靜態屬性的區別:
1、內存中存放位置不同:static修飾的屬性和方法存在方法區裏,而非靜態存在堆內存中
2、生命週期不一樣,靜態屬性和方法在類初始化的時候初始化,在類消失後被銷燬。而非靜態要在創建對象才存在,對象銷燬後銷燬。
3、靜態屬性是整個類都公用的
4、用法:靜態的可以直接通過類名訪問,非靜態只能通過對象進行訪問
5、靜態方法: 子類不能重寫父類靜態方法,如重名父類方法會被隱藏。

參照:
靜態特點:https://blog.csdn.net/weixin_43821892/article/details/90054868
靜態jvm何時初始化:https://www.cnblogs.com/ivanfu/archive/2012/02/12/2347817.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章