所以:聲明為static的變量實(shí)質(zhì)上就是全局變量。當(dāng)聲明一個(gè)對(duì)象時(shí),并不產(chǎn)生static變量的拷貝,而是該類所有的實(shí)例變量共用同一個(gè)static變量。
使用:java中只有static和非static變量,這個(gè)屬于每個(gè)類的,如果需要全局變量比如PI(3.14...),可以寫(xiě)一個(gè)類Math,定義static變量PI,調(diào)用Math.PI就可以使用了,這樣就達(dá)到我們使用全局變量的目的了。
就像普通的 field 那樣聲明就行了。
public interface SomeConstants {
?? public
?? public String IP = "166.111.16.1";
?? public boolean test = true;
} 就可以。
用到常量的類 implements 這個(gè)接口 .. 簡(jiǎn)單情況這樣就行樂(lè)。
2、更 formal 的做法是寫(xiě)一個(gè)類維護(hù)所有的常量,負(fù)責(zé)從配置文件(例如properties文件或xml文件)讀取所有的常量的值。
可以在一個(gè) static {} 塊里從配置文件中初始化所有 static 的變量。 這樣有利于提高軟件的可配置性。改些東東不用動(dòng)代碼,比較好。
最好要有 config Tool 負(fù)責(zé)寫(xiě)配置文件。
3.其他說(shuō)明:
定義一個(gè)公開(kāi)類,在里面加static 變量。
public class infos{
??private infos(){
??}
?? public static int PORT = 80;
?? public static String IP = "166.111.166.111";
?? public static boolean test = true;
?? public static finale String MYNAME="zzz"; //定義中用了finale,就是不能改變指的。
}
在別的class中調(diào)用這些變量就是: infos.PORT,infos.IP,infos.test,infos.MYNAME
多個(gè)class交互時(shí)可以通過(guò)改變這些變量的值來(lái)傳遞信息。比如 infos.test被別的class改成了false,可能表示某一件事已經(jīng)失敗或已經(jīng)做過(guò),其它c(diǎn)lass就可以提前知道這些信息。