HelloWorld 善戰(zhàn)者,求之于勢,不責(zé)于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

          Java中 static/transient,final/volatile 說明2008-05-22 11:06你可以任意使用如下的修改限定關(guān)鍵字來定義一個(gè)字段:final或者volatile和/或者static和/或者transient。
          如果你將一個(gè)字段定義為final,編譯器將確保字段當(dāng)成一個(gè)常量——只讀變量來初始化和處理。因?yàn)榫幾g器知道常量是不變的,所以在程序的字節(jié)碼中對其進(jìn)行了內(nèi)部優(yōu)化。class Employee

          {

          final int ACCOUNTANT = 1;

          final int PAYROLL_CLERK = 2;

          final int MANAGER = 3;

           

          int jobID = ACCOUNTANT;

          }如果你將一個(gè)字段聲明為volatile,則多線程將能訪問此字段,而特定的編譯器將防止最優(yōu)化以使該字段能被適當(dāng)?shù)脑L問。如果你將一個(gè)字段定義為static,則所有對象都將共享此字段的一份拷貝。當(dāng)你將一個(gè)新值賦給這個(gè)字段時(shí),所有對象都將得到這個(gè)新值。如果沒有指定為static,則這個(gè)字段將是一個(gè)實(shí)例字段,每個(gè)對象都使用他們自己的一份拷貝。
          定義為transient的字段值在對象串行化過程中將不被保存。實(shí)例字段
          “實(shí)例字段”就是沒有使用static修改標(biāo)識符定義的字段。實(shí)例字段和對象緊密相連——而不是和類。當(dāng)在一個(gè)對象代碼里修改時(shí),僅僅這個(gè)相關(guān)的類實(shí)例——對象——可以得到這個(gè)改變。實(shí)例字段隨對象的創(chuàng)建而創(chuàng)建,隨對象的釋放而釋放。類字段
          類字段是用static關(guān)鍵字定義的字段。類字段和類聯(lián)系——而不是對象。當(dāng)在一個(gè)類代碼中修改時(shí),這個(gè)類(以及所有創(chuàng)建的對象)都能感知這個(gè)變化。類字段隨類的加載而創(chuàng)建,隨類的卸載而釋放常量
          “常量”是一種只讀變量;當(dāng)JVM初始化這種變量后,變量的值就不能改變了。
          使用final關(guān)鍵字來定義常量。正如有兩種字段——實(shí)例和類字段,常量也有兩種——實(shí)例常量和類常量。為了提高效率,應(yīng)當(dāng)創(chuàng)建類常量,或者說是final static字段。class Constants

          {

          final int FIRST = 1;

          final static int SECOND = 2;

           

          public static void main(String[] args)

          {

          int iteration = SECOND;

           

          if (iteration == FIRST)//編譯錯(cuò)誤

          System.out.println(“first iteration”);

          else

          if (iteration == SECOND)

          System.out.println(“second iteration”);

          }

          }
          上例中的Constants類定義了一對常量——FIRST和SECOND。FIRST是實(shí)例常量,因?yàn)镴VM給每個(gè)Constants對象分配一份FIRST的拷貝。相反的,因?yàn)镴VM在加載Constants類后只創(chuàng)建了一份SECOND拷貝,所以SECOND是類常量。
          注意:當(dāng)你嘗試在main()中直接訪問FIRST時(shí)會導(dǎo)致一個(gè)編譯錯(cuò)誤。常量FIRST直到一個(gè)對象創(chuàng)建時(shí)才存在,所以FIRST僅僅只能被這個(gè)對象所訪問——而不是類。



          </script>

          posted on 2008-06-02 09:57 helloworld2008 閱讀(412) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 平远县| 榆社县| 慈溪市| 邓州市| 手机| 灵宝市| 甘谷县| 井冈山市| 彰化县| 正宁县| 三穗县| 新密市| 老河口市| 常宁市| 金坛市| 金沙县| 光泽县| 芦溪县| 双桥区| 静乐县| 枝江市| 剑阁县| 屯门区| 卓资县| 利津县| 佛山市| 简阳市| 安龙县| 万州区| 江川县| 绥宁县| 宣城市| 嘉鱼县| 依安县| 牡丹江市| 建湖县| 梁河县| 罗山县| 深泽县| 通江县| 榆树市|