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

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

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

    隨筆 - 30, 文章 - 0, 評論 - 27, 引用 - 0
    數據加載中……

    final關鍵字到底修飾了什么

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

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

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

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

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


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

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

    主站蜘蛛池模板: 亚洲精品视频在线观看视频| 中文字幕在线亚洲精品 | 天堂在线免费观看中文版| 久久久国产精品亚洲一区| 永久免费av无码网站yy| 亚洲尤码不卡AV麻豆| 一本久久免费视频| 亚洲中文字幕无码不卡电影 | 亚洲综合成人婷婷五月网址| 成人免费福利视频| 亚洲喷奶水中文字幕电影| 免费观看的毛片大全| 涩涩色中文综合亚洲| 免费在线视频一区| CAOPORN国产精品免费视频| 亚洲AV无码一区二区二三区软件| 国产一精品一av一免费爽爽| 亚洲成色在线影院| 午夜宅男在线永久免费观看网| 亚洲人成人网毛片在线播放| 日本一道高清不卡免费| 一级女人18片毛片免费视频| 亚洲国产精品VA在线看黑人| 99在线观看精品免费99| 国产成人亚洲合集青青草原精品| 国产资源免费观看| 91免费福利视频| 亚洲中文字幕无码av在线| 国产精品免费视频网站| 美女无遮挡拍拍拍免费视频| 777亚洲精品乱码久久久久久| 成年人网站在线免费观看| 无码毛片一区二区三区视频免费播放| 色噜噜AV亚洲色一区二区| 国产h视频在线观看网站免费| 亚洲国产成人久久精品软件| 久久激情亚洲精品无码?V| 狼群影院在线观看免费观看直播| 亚洲熟妇久久精品| 国产精品亚洲片在线| 免费电视剧在线观看|