中文JAVA技術平等自由協作創造

          Java專題文章博客和開源

          常用鏈接

          統計

          最新評論

          Java中靜態屬性,靜態方法和靜態初始化器

            static稱為靜態修飾符,它可以修飾類中的屬性和方法。

            1.靜態屬性

            被static修飾的屬性稱為靜態屬性,這類屬性一個最本質的特點是:它們是類的屬性,而不屬于任何一個類的具體對象。換句話說,對于該類的任何一個具體對象而言,靜態屬性是一個公共的存儲單元,任何一個類的對象訪問它時,取到的都是相同的數值,同樣任何一個類的對象去修改它時,也都是在對同一個內存單元做操作。

            靜態屬性節省空間;靜態屬性保持類對象的一致性修改

            舉例:總和、基本工資等

            2.靜態方法

            static修飾符修飾的屬性是屬于類的公共屬性:與之相仿,用static修飾符修飾的方法,是屬于整個類的類方法;而不用static至少有三重含義:

            (1)調用這個方法時,應該使用類名做前綴,而不是某一個具體的對象名;

            (2)非static的方法是屬于某個對象的方法,在這個對象創建時對象的方法在內存中擁有自己專用的代碼段;而static的方法是屬于整個類的,它在內存中的代碼段將隨著類的定義而分配和裝載,不被任何一個對象專有:

            (3) 由于static方法是屬于整個類的,所以它不能操縱和處理屬于某個對象的成員變量,而只能處理屬于整個類的成員變量。也即,static方法只能處理static的數據。

            3.靜態初始化器

            靜態初始化器是由關鍵字static引導的一對大括號括起的語句組。它的作用與類的構造函數有些相似,都用來完成初始化的工作,但是靜態初始化器與構造函數有三點根本的不同:

            (1)構造函數是對每個新創建的對象初始化,而靜態初始化器是對每個類進行初始化;

            (2)構造函數是在用new運算符產生新對象時由系統自動執行,而靜態初始化器則是在它所屬的類加載入內存時由系統調用運行的;

            (3)不同于構造函數,靜態初始化器不是方法,沒有方法名、返回值和參數列表。

            讓我們考慮如下的問題,所以考慮由系統自動為新雇員對象生成編號變量的值,將Employee類的屬性定義改寫為:

            class Employee //定義雇員類

            {

            private int m_EmpNo; //私有屬性:雇員編號

            String m_EmpName; //雇員姓名

            char m_EmpGender; //雇員性別

            private double m_EmpSalary; //私有屬性:雇員工資

            static double m_MinSalary; //靜態屬性:最低工資

            static int m_NextEmpNo; //下一個新雇員的編號

            }

            構造函數為:

            Employee(String name,char sex,double sal) //構造函數,完成初始化工作

            {

            m_EmpNo=m_NextEmpNo++; //新雇員使用了新編號之后,再產生另一個新編號

            m_EmpName=new String(name);

            m_EmpGender=sex;

            if(sal>=m_MinSalary) //工資額不合理時使用最低工資

            m_EmpSalary=sal;

            else

            m_EmpSalary=m_MinSalary;

            這里,為實現編號不重復地自動生成,引入一個類成員m_NextEmpNo,它的值是下一個新創建的雇員對象的編號。每當有新對象生成時,系統調用構造函數,將m_NextEmpNo的當前值賦給新雇員的編號變量m_EmpNo,然后讓類靜態屬性m_NextEmpNo自動加一,這樣新對象的編號就不會與已有對象的編號相重復。表面看來整個問題似已解決,但實際上還有很關鍵的一步沒有完成:那就是static的類屬性m_NextEmpNo的初始化問題。

            總之,靜態初始化器的作用是對整個類完成初始化操作,包括給static類成員賦初值等,它在系統向內存加載時自動完成。sat答案

          posted on 2014-01-01 09:58 好不容易 閱讀(180) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 阜南县| 肥西县| 蒲城县| 翼城县| 疏附县| 丹棱县| 和龙市| 昌宁县| 左云县| 鄂尔多斯市| 库车县| 房山区| 读书| 化隆| 达尔| 古蔺县| 周口市| 沅江市| 沈丘县| 天气| 彝良县| 利辛县| 方城县| 本溪| 竹溪县| 通化市| 高雄市| 嘉兴市| 措勤县| 磐石市| 赫章县| 尚义县| 大悟县| 广汉市| 双辽市| 萝北县| 闽清县| 阳朔县| 仁化县| 太康县| 上杭县|