1. 程式人生 > >java中定義常量和變數

java中定義常量和變數

        java沒有叫 全域性變數的東西(有全域性變數還叫OO嗎?);原因:Java將所有設計都基於物件的基礎上。Java的全域性變數只能對一個類內部而言。能夠在類內的任何地方使用的變數就是全域性變數,而只在某個特定的函式或者區域性的程式塊內使用的變數則是區域性變數。
        所以:宣告為static的變數實質上就是全域性變數。當宣告一個物件時,並不產生static變數的拷貝,而是該類所有的例項變數共用同一個static變數。

        使用:java中只有static和非static變數,這個屬於每個類的,如果需要全域性變數比如PI(3.14...),可以寫一個類Math,定義static變數PI,呼叫Math.PI就可以使用了,這樣就達到我們使用全域性變數的目的了。

1、將一個

 package 中需要的常量集中到一個 XyzConstants 之類的 interface 裡宣告,就像普通的 field 那樣宣告就行了。 

  1. publicinterface SomeConstants {  
  2.    public intPORT = 80;  
  3.    public String IP = "166.111.16.1";  
  4.    publicboolean test = true;  
  5. }   

就可以。用到常量的類 implements 這個介面 .. 簡單情況這樣就行樂。 2、更 formal 的做法是寫一個類維護所有的常量,負責從配置檔案(例如properties檔案或xml檔案)讀取所有的常量的值。

可以在一個 static {} 塊裡從配置檔案中初始化所有 static 的變數。 這樣有利於提高軟體的可配置性。改些東東不用動程式碼,比較好。最好要有 config Tool 負責寫配置檔案。

3.其他說明:

定義一個公開類,在裡面加static 變數。

  1. publicclass infos{  
  2.   private infos(){  
  3.   }  
  4.    publicstaticint PORT = 80;  
  5.    publicstatic String IP = "166.111.166.111";  
  6.    publicstaticboolean test = true;  
  7.    public
    staticfinal String MYNAME="zzz"//定義中用了final,就是不能改變的。
  8. }  

在別的class中呼叫這些變數就是: infos.PORT,infos.IP,infos.test,infos.MYNAME
多個class互動時可以通過改變這些變數的值來傳遞資訊。比如 infos.test被別的class改成了false,可能表示某一件事已經失敗或已經做過,其它class就可以提前知道這些資訊。

其中infos.MYNAME被定義為了final,即成為常量。用final修飾的成員變量表示常量,值一旦給定就無法改變!