遇到什么問(wèn)題?
我們說(shuō),類是對(duì)象的抽象,是對(duì)象的模板,對(duì)象是類的實(shí)例.
我們現(xiàn)在需要使用一種方式來(lái)表示整個(gè)事物共同都有的狀態(tài)和行為.
例如:人類的總數(shù).
很顯然,這是一個(gè)整個(gè)事物共同都有的狀態(tài),那我們要怎么表示呢?
非常簡(jiǎn)單,可以使用static關(guān)鍵字修飾.
static修飾符
static修飾符: 表示靜態(tài)的拼坎,可修飾字段憾筏、方法固额、內(nèi)部類撩嚼,其修飾的成員屬于類,而不是對(duì)象級(jí)別旧困。
static修飾符作用
用來(lái)區(qū)別字段肛度,方法,內(nèi)部類只酥,初始化代碼塊是屬于對(duì)象還是屬于類本身娃胆。
使用static修飾的成員(變量,方法,內(nèi)部類),稱之為類的成員(靜態(tài)成員).
沒(méi)有使用static修飾的成員變量,方法,內(nèi)部類. 稱之為實(shí)例成員(非靜態(tài)成員).
static修飾符的特點(diǎn)
- 隨著JVM的加載而加載.
當(dāng)JVM把static成員所在的字節(jié)碼加載進(jìn)JVM的時(shí)候,static就已經(jīng)存在于JVM中(方法區(qū)). - 優(yōu)先于對(duì)象存在.
對(duì)象是我們通過(guò)new關(guān)鍵字創(chuàng)建出來(lái)的,而靜態(tài)成員,在加載進(jìn)JVM就已經(jīng)存在了.
注意:static不能和this一起使用. static成員隨著字節(jié)碼加載進(jìn)入JVM,就已經(jīng)分配內(nèi)存空間了,而此時(shí)并沒(méi)有使用new去創(chuàng)建對(duì)象.static存在的時(shí)候,對(duì)象級(jí)別數(shù)據(jù)還不存在. - 被所有當(dāng)前這個(gè)類的對(duì)象所共享.
- 調(diào)用靜態(tài)成員,直接使用類名調(diào)用即可.
靜態(tài)成員屬于類型,而不屬于某一個(gè)具體的對(duì)象.即使我們使用對(duì)象.靜態(tài)成員
,其底層(看反編譯文件)依然是類名.靜態(tài)成員
static的使用
什么時(shí)候定義成static的字段和方法:如果這個(gè)狀態(tài)/行為屬于整個(gè)類,就直接使用static修飾.被所以對(duì)象所共享.
在開發(fā)中,往往把工具方法用static修飾,可以直接用類名調(diào)用