<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 30, 文章 - 0, 評(píng)論 - 27, 引用 - 0
    數(shù)據(jù)加載中……

    final關(guān)鍵字到底修飾了什么

    final使得被修飾的變量"不變",但是由于對(duì)象型變量的本質(zhì)是“引用”,使得“不變”也有了兩種含義:引用本身的不變,和引用指向的對(duì)象不變。

      引用本身的不變:
      final StringBuffer a=new StringBuffer("immutable");
      final StringBuffer b=new StringBuffer("not immutable");
      a=b;//編譯期錯(cuò)誤

      引用指向的對(duì)象不變:
      final StringBuffer a=new StringBuffer("immutable");
      a.append(" broken!"); //編譯通過

      可見,final只對(duì)引用的“值”(也即它所指向的那個(gè)對(duì)象的內(nèi)存地址)有效,它迫使引用只能指向初始指向的那個(gè)對(duì)象,改變它的指向會(huì)導(dǎo)致編譯期錯(cuò)誤。至于它所指向的對(duì)象的變化,final是不負(fù)責(zé)的。這很類似==操作符:==操作符只負(fù)責(zé)引用的“值”相等,至于這個(gè)地址所指向的對(duì)象內(nèi)容是否相等,==操作符是不管的。

      理解final問題有很重要的含義。許多程序漏洞都基于此----final只能保證引用永遠(yuǎn)指向固定對(duì)象,不能保證那個(gè)對(duì)象的狀態(tài)不變。在多線程的操作中,一個(gè)對(duì)象會(huì)被多個(gè)線程共享或修改,一個(gè)線程對(duì)對(duì)象無意識(shí)的修改可能會(huì)導(dǎo)致另一個(gè)使用此對(duì)象的線程崩潰。一個(gè)錯(cuò)誤的解決方法就是在此對(duì)象新建的時(shí)候把它聲明為final,意圖使得它“永遠(yuǎn)不變”。其實(shí)那是徒勞的。


    文章來源:http://www.cnblogs.com/rodney/archive/2005/08/18/217458.html

    posted on 2008-01-17 10:06 石業(yè)海 閱讀(369) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA基礎(chǔ)

    主站蜘蛛池模板: 国产精品麻豆免费版| 少妇高潮太爽了在线观看免费| 亚洲国产精品尤物YW在线观看| 亚洲AV无码片一区二区三区| 精品无码国产污污污免费| 亚洲人成人网站18禁| 国产免费69成人精品视频| 国产精品亚洲专区在线播放| 日本19禁啪啪无遮挡免费动图| 亚洲人成电影网站色www| 国产免费av片在线无码免费看| 日韩在线视精品在亚洲| 亚洲精品无码久久毛片| 你好老叔电影观看免费| 亚洲第一福利视频| 在线天堂免费观看.WWW| 久久精品国产亚洲av天美18| 亚洲国产精品视频| 日本免费在线中文字幕| 中文字幕在线观看亚洲视频| 国产资源免费观看| a级毛片视频免费观看| 亚洲视频一区在线| 四虎影视在线永久免费看黄| 一二三区免费视频| 亚洲视频一区网站| 国产成人免费a在线视频色戒| 国产国产人免费人成成免视频| 久久久久亚洲AV成人无码网站| 免费可以看黄的视频s色| 国产精品亚洲色图| 亚洲AV人无码激艳猛片| 成人免费毛片内射美女APP| 人妻仑乱A级毛片免费看| 久久久久亚洲av无码尤物| 成人免费无遮挡无码黄漫视频| 老司机免费午夜精品视频| 久久精品国产亚洲av水果派| 免费又黄又硬又爽大片| 国内精品免费在线观看| 亚洲av无码专区在线电影天堂|