中文JAVA技術(shù)平等自由協(xié)作創(chuàng)造

          Java專題文章博客和開源

          常用鏈接

          統(tǒng)計

          最新評論

          Java中靜態(tài)屬性,靜態(tài)方法和靜態(tài)初始化器

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

            1.靜態(tài)屬性

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

            靜態(tài)屬性節(jié)省空間;靜態(tài)屬性保持類對象的一致性修改

            舉例:總和、基本工資等

            2.靜態(tài)方法

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

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

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

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

            3.靜態(tài)初始化器

            靜態(tài)初始化器是由關(guān)鍵字static引導(dǎo)的一對大括號括起的語句組。它的作用與類的構(gòu)造函數(shù)有些相似,都用來完成初始化的工作,但是靜態(tài)初始化器與構(gòu)造函數(shù)有三點(diǎn)根本的不同:

            (1)構(gòu)造函數(shù)是對每個新創(chuàng)建的對象初始化,而靜態(tài)初始化器是對每個類進(jìn)行初始化;

            (2)構(gòu)造函數(shù)是在用new運(yùn)算符產(chǎn)生新對象時由系統(tǒng)自動執(zhí)行,而靜態(tài)初始化器則是在它所屬的類加載入內(nèi)存時由系統(tǒng)調(diào)用運(yùn)行的;

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

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

            class Employee //定義雇員類

            {

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

            String m_EmpName; //雇員姓名

            char m_EmpGender; //雇員性別

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

            static double m_MinSalary; //靜態(tài)屬性:最低工資

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

            }

            構(gòu)造函數(shù)為:

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

            {

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

            m_EmpName=new String(name);

            m_EmpGender=sex;

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

            m_EmpSalary=sal;

            else

            m_EmpSalary=m_MinSalary;

            這里,為實現(xiàn)編號不重復(fù)地自動生成,引入一個類成員m_NextEmpNo,它的值是下一個新創(chuàng)建的雇員對象的編號。每當(dāng)有新對象生成時,系統(tǒng)調(diào)用構(gòu)造函數(shù),將m_NextEmpNo的當(dāng)前值賦給新雇員的編號變量m_EmpNo,然后讓類靜態(tài)屬性m_NextEmpNo自動加一,這樣新對象的編號就不會與已有對象的編號相重復(fù)。表面看來整個問題似已解決,但實際上還有很關(guān)鍵的一步?jīng)]有完成:那就是static的類屬性m_NextEmpNo的初始化問題。

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

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


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


          網(wǎng)站導(dǎo)航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 呼和浩特市| 同江市| 房山区| 吴川市| 樟树市| 临邑县| 平顺县| 新邵县| 呈贡县| 土默特左旗| 托里县| 吉安市| 亳州市| 永修县| 水城县| 吉首市| 恩施市| 五河县| 建湖县| 巴彦淖尔市| 东阿县| 阿鲁科尔沁旗| 池州市| 阿拉善左旗| 汽车| 阿合奇县| 湘潭县| 沛县| 扎囊县| 淄博市| 洛浦县| 石首市| 岱山县| 晋城| 上犹县| 兴宁市| 云南省| 宜兰县| 镇江市| 鹤壁市| 华亭县|