static方法是沒(méi)有this的方法.
通過(guò)類本身來(lái)調(diào)用static方法
在類中置入static方法, 就可以訪問(wèn)其他的static方法和static域——達(dá)到全局方法作用
(一)靜態(tài)變量
使用:
(1) 所有該類對(duì)象的該屬性都一樣時(shí)使用
(2) static方法是類級(jí)別的, 不管實(shí)例對(duì)象各屬性值(實(shí)例變量值)是多少 (比如置為null),都不影響static方法的調(diào)用(如讓Chinese Lisi = null; 但Lisi仍有國(guó)籍China,可訪問(wèn)到該靜態(tài)變量)
(3) 類級(jí)別的: 在類加載時(shí)就寫入方法區(qū); 只有一份而可以多次、多對(duì)象對(duì)它進(jìn)行訪問(wèn); 先于對(duì)象就存在
(二)靜態(tài)方法
靜態(tài)數(shù)據(jù)存放于代碼區(qū), 類加載時(shí)即開(kāi)辟空間/寫入, 有“共享”性質(zhì)
- 語(yǔ)法——static決定對(duì)變量/方法的訪問(wèn)方式:
? (1)有static: 類名.方法名(實(shí)參列表)
? (2)無(wú)static: 引用.方法名(實(shí)參列表) (即new一個(gè)對(duì)象, 通過(guò)對(duì)象訪問(wèn))
-
何時(shí)需要設(shè)置為靜態(tài)方法?
(1) 這個(gè)動(dòng)作不需要對(duì)象的參與
(2) 所有對(duì)象執(zhí)行這個(gè)動(dòng)作時(shí)產(chǎn)生的結(jié)果一樣時(shí),提升為static
-
使用
(1) static無(wú)this: 靜態(tài)方法不能直接訪問(wèn)實(shí)例數(shù)據(jù)(非static的變量/方法), 需要一個(gè)對(duì)象來(lái)完成非實(shí)例數(shù)據(jù)的訪問(wèn)
(2) 但我們大多數(shù)方法都定義為實(shí)例方法( 一般都需要對(duì)象參與/ 一般結(jié)果不同)
(3) -> 大多數(shù)“工具類”中的方法都是靜態(tài)方法 :)
(三)靜態(tài)代碼塊
-
怎么用——語(yǔ)法格式:
static{ java語(yǔ)句; }
-
何時(shí)用——完成一些要求在類加載的時(shí)刻執(zhí)行的代碼/完成預(yù)備工作(準(zhǔn)備工具)
e.g. 生成日志、初始化連接池、解析XML配置文件……
-
何時(shí)執(zhí)行——
- 類加載時(shí)
- 僅執(zhí)行一次
- 一個(gè)類中可定義多個(gè)
- 有順序(上->下)
-
對(duì)應(yīng)還有「實(shí)例代碼塊」(非常少用)
{ java語(yǔ)句; }- 對(duì)象初始化時(shí)機(jī),對(duì)象創(chuàng)建時(shí)---構(gòu)造函數(shù)執(zhí)行之前,可多個(gè),有順序