Oo緣來是你oO


          posts - 120,comments - 125,trackbacks - 0
          作者:深夜兩點
          轉自:http://dev.csdn.net/author/DeepNightTwo/860de540961f4fbd95350352ab2255ea.html

          對與java中的final變量,java編譯器是進行了優化的。每個使用了final類型變量的地方都不會通過連接而進行訪問。比如說Test類中使用了Data類中一個final的int數字fNumber=77,這時候,java編譯器會將77這個常數編譯到Test類的指令碼或者常量池中。這樣,每次Test類用到fNumber的時候,不會通過引用連接到Data類中進行讀取,而是直接使用自己保存在類文件中的副本。
          用程序說話:
          Test.java:

          public class Test{
          ?public static void main(String[] args){
          ??System.out.println(Data.fNumber);
          ?}
          }


          Data.java:

          public class Data{
          ?public static final int fNumber=77;?
          }

          執行命令和結果:

          Microsoft Windows XP [版本 5.1.2600]
          (C) 版權所有 1985-2001 Microsoft Corp.

          C:\Documents and Settings\zangmeng>cd ..

          C:\Documents and Settings>cd ..

          C:\>javac Test.java

          C:\>java Test
          77

          C:\>


          這時候,我們更改Data.java的內容:
          public class Data{
          ?public static final int fNumber=777;?
          }

          然后執行如下命令:

          C:\>javac Data.java

          C:\>java Test
          77

          C:\>

          這里我們看到,雖然Data.java中的fNumber已經更改為777,而且已經重新編譯了,但是因為編譯器把fNumber的副本保存Test類中,所以在重新編譯Test類的前,Test類一直把fNumber認為是77而不是777。下面我們變異Test.java,再執行,看看結果。

          C:\>javac Test.java

          C:\>java Test
          777

          C:\>
          這時候,我們看到,重新編譯的Test類將新的777數值封裝到了自己類中。

          整個過程如下:
          Microsoft Windows XP [版本 5.1.2600]
          (C) 版權所有 1985-2001 Microsoft Corp.

          C:\Documents and Settings\zangmeng>cd ..

          C:\Documents and Settings>cd ..

          C:\>javac Test.java

          C:\>java Test
          77
          //在這里改變了Data.java的內容
          C:\>javac Data.java

          C:\>java Test
          77

          C:\>javac Test.java

          C:\>java Test
          777

          C:\>



          馬嘉楠
          jianan.ma@gmail.com

          posted on 2006-10-14 10:24 馬嘉楠 閱讀(424) 評論(1)  編輯  收藏

          FeedBack:
          # re: 使用Java中的final變量需要注意的地方(轉載)
          2006-10-14 14:42 | vista--
          不錯,final 用的適當可以提高程序的效率
          ^_^  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 崇仁县| 屏边| 和硕县| 和田县| 兴山县| 丹棱县| 商洛市| 特克斯县| 天柱县| 敦煌市| 泸州市| 益阳市| 清丰县| 鄂托克前旗| 平潭县| 芒康县| 天全县| 临安市| 天气| 嵊州市| 托克逊县| 上高县| 永善县| 略阳县| 西华县| 江陵县| 资中县| 合江县| 岑巩县| 遂宁市| 柳江县| 资源县| 宜城市| 松阳县| 淳安县| 都兰县| 新宾| 礼泉县| 上虞市| 屏东市| 武城县|