程序在運行時可能需要一些全局?jǐn)?shù)據(jù)婚惫,比如遠(yuǎn)程資源的URL氛赐,標(biāo)識名稱先舷,游戲中關(guān)卡的總數(shù)艰管,當(dāng)前的關(guān)卡,游戲角色的數(shù)量蒋川,還有一些實用工具用于格化轉(zhuǎn)換牲芋,數(shù)據(jù)驗證等。這些數(shù)據(jù)和功能屬于全局概念捺球,無需在運行時動態(tài)創(chuàng)建對象來維持這些數(shù)據(jù)和功能缸浦,而在程序在初始化應(yīng)該為些數(shù)據(jù)分配空間和初始化。
Java使用static關(guān)鍵字在定義這全局?jǐn)?shù)據(jù)和全局部功能的成員氮兵,稱為靜態(tài)屬性和靜態(tài)方法裂逐,由于Java程序最基本的單位是類,所以這些靜態(tài)屬性和靜態(tài)方法也定義在類中泣栈,但需要注意是這類創(chuàng)建的對象和這些靜態(tài)成員沒有關(guān)系维贺,對象并有維持這些成員數(shù)據(jù)炼邀。
既然作為全局成員因些訪問也比較方便,訪問靜態(tài)屬性直接通過類名.屬性名,訪問靜態(tài)方法直接通過類名.靜態(tài)方法型奥,需要創(chuàng)建對象群凶。當(dāng)同類中其他成員方法(即非static方法柠偶,必須通過創(chuàng)建對象才能訪問)和靜態(tài)方法可以省略類名限定户秤,但外部類訪問必須加上類名限定。
靜態(tài)方法內(nèi)部除了可操作自身的定義局部變量外颠悬,只能訪問外部的全局?jǐn)?shù)據(jù)static屬性矮燎。盡管它委身所在類中還定了其他成員變量,但不能訪問赔癌。
importjava.text.SimpleDateFormat;
importjava.util.Date;
classMyTool {
privateStringstr;
publicstaticStringPATTERN="yyyy-MM-dd";
publicstaticString format(Datedate){
SimpleDateFormatsdf=newSimpleDateFormat(PATTERN);
returnsdf.format(date);
}
publicvoidsetStr(Stringstr) {
this.str=str;
}
publicString getStr() {
returnstr;
}
publicvoidlargeFistLetter(){
Strings=str.toLowerCase();
charch=s.charAt(0);
str=ch+str.substring(1,str.length());
}
}
publicclassDemo1 {
publicstaticvoidmain(String[]args) {
MyToolmt=newMyTool();
mt.setStr("Hello");
System.out.println(mt.getStr());
Datenow=newDate();
Stringstr=MyTool.format(now);
System.out.println(str);
MyTool.PATTERN="yyyy/MM/dd";
str=MyTool.format(now);
System.out.println(str);
}
}
程序運行的結(jié)果如下: