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

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

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

類加載:
ide

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

參照:
靜態特色:https://blog.csdn.net/weixin_43821892/article/details/90054868
靜態jvm什麼時候初始化:https://www.cnblogs.com/ivanfu/archive/2012/02/12/2347817.html線程

相關文章
相關標籤/搜索