<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ǔ)

    主站蜘蛛池模板: 亚洲jizzjizz在线播放久| 亚洲国产成人精品无码区二本| 一级一级一片免费高清| 国产男女猛烈无遮档免费视频网站| 在线综合亚洲欧洲综合网站| 久久综合AV免费观看| 亚洲色丰满少妇高潮18p| 久久不见久久见中文字幕免费 | 亚洲免费人成视频观看| 亚洲精品视频在线免费| 国产乱码免费卡1卡二卡3卡| 亚洲综合无码一区二区痴汉| 青青青青青青久久久免费观看| 免费人成动漫在线播放r18 | 亚洲男人的天堂在线播放| 毛片无码免费无码播放| 亚洲乱码一二三四区国产| 热久久精品免费视频| 一级做α爱过程免费视频| 好看的亚洲黄色经典| 最近的中文字幕大全免费8| 学生妹亚洲一区二区| 亚洲精品成人a在线观看| 日本人成在线视频免费播放| 国产色在线|亚洲| 亚洲av无码成人精品区在线播放| 国产精品免费αv视频| 亚洲国产精品午夜电影| 国产视频精品免费| 中文字幕免费不卡二区| 亚洲人成网男女大片在线播放| 国产91久久久久久久免费| 免费国产成人午夜在线观看| 国产精品亚洲专区在线观看| a级亚洲片精品久久久久久久| 67194国产精品免费观看| 国产精品亚洲一区二区无码| 午夜亚洲AV日韩AV无码大全| 国产色爽女小说免费看| 9277手机在线视频观看免费| 黄网站色视频免费观看45分钟|