大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java中的字符串不可變的的原因有哪些

Java中的字符串不可變的的原因有哪些

更新時間:2019-09-03 17:11:53 來源:動力節點 瀏覽2622次

  

在java里String是不可變的。一個不可變的對象是一個簡單的類,它的實例不會被修改。當一個不可變的類的實例被創建時,所有的信息已經在實例中被初始化了,而且這些信息不能被修改。 不可變的類有很多優勢。本文動力節點java培訓機構小編分享Java中的字符串不可變的的原因有哪些,分別從內存,同步和數據結構三個方面進行了說明。


1、字符串池


  字符串池是方法區中的一個特殊存儲區。當一個字符串被創建的時候,如果字符串池中已經存在這個字符串值,就直接返回已存在字符串的引用,否則,就創建一個新的字符串到字符串池中。


  下面代碼將只會在堆中創建一個字符串對象:


String string1 = "abcd";

String string2 = "abcd";

2.png

java-string-pool.jpeg


  如果字符串是可變的,改變引用的字符串將會導致其他引用此字符串是錯誤的。



  2、緩存Hashcode


  在java中經常使用字符串的哈希碼。例如:在HashMap 或HashSet 中,字符串的不可變性,保證了哈希碼是一致的,從而不必擔心哈希碼會改變。這意味著,每次使用哈希碼都不必重新計算一次。這樣,會更加高效。


  在String類中,有如下代碼:


private int hash;//this is used to cache hash code.


  以上代碼中hash變量中就保存了一個String對象的hashcode,因為String類不可變,所以一旦對象被創建,該hash值也無法改變。所以,每次想要使用該對象的hashcode的時候,直接返回即可



  3、使其他類的使用更加方便


  為了說明這一點,請看以下代碼:


HashSetset = new HashSet();

set.add(new String("a"));

set.add(new String("b"));

set.add(new String("c"));


for(String a: set)

      a.value = "a";


  在這個例子中,如果String是可變的,它的值改變將會違反set的設計(set中包含了不重復的元素)。當然,以上代碼僅僅是個演示,實際String類中,并沒有value字段。



  4、安全


  在許多java類中,字符串被廣泛使用為參數。比如:網絡連接,打開文件等。如果字符串是可變的,則一個連接或文件將被更改,這可能會導致嚴重的安全威脅。該方法認為它連接到一臺機器,但可能并沒有。可變的字符串可能在反射中也會造成安全問題,因為它的參數是字符串。


  代碼示例:


boolean connect(string s){

    if (!isSecure(s)) { 

    throw new SecurityException(); 

    }

        //here will cause problem, if s is changed before this by     using other references.    

        causeProblem(s);

}


  5、不可變的對象,自然是線性安全的


  因為不可變對象不能被更改,因此可以在多個線程之間自由共享。不需要任何同步處理。


  總之,把字符串設計成不可變的,主要目的是為了高效和安全。這也是為什么許多情況下更偏愛選擇不可變的類的原因。


以上就是動力節點java培訓機構小編介紹的“ Java中的字符串不可變的的原因有哪些”的內容,希望能夠幫助到大家,更多精彩內容請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。


相關免費視頻教程推薦


JAVA可變字符串視頻教程下載:http://www.dabaquan.cn/xiazai/2513.html



提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产亚洲欧洲国产综合一区 | 欧美a一片xxxx片 | 国产一区二区三区久久精品小说 | 日本大片免费一级 | 宅男噜噜噜66一区二区 | 中文乱码字幕午夜无线观看 | 亚洲国产精品悠悠久久琪琪 | 99视频网址 | 九九久久国产精品大片 | 女人18特级一级毛片免费视频 | 亚洲视频精品在线观看 | 日本护士一级毛片在线播放 | 天天干天天射天天操 | 日韩在线国产精品 | 四虎成人精品在永久在线观看 | 亚洲成a v人片在线观看 | 综合久久91 | 中文精品视频一区二区在线观看 | 奇米久久 | 欧美日韩综合在线视频免费看 | 天天躁夜夜躁很很躁麻豆 | 在线免费一区二区 | 久久久久免费观看 | 毛色毛片免费看 | 国产成人综合精品 | 狠狠色香婷婷久久亚洲精品 | 日本在线无 | 99国产成人精品2021 | 在线 色| 黄网站www | 中文字幕欧美日韩高清 | 亚洲国产人久久久成人精品网站 | 狠狠色丁香婷婷久久综合不卡 | 在线亚洲 欧美 日本专区 | 久久久久日韩精品无 | 久久婷婷五综合一区二区 | 日韩久久一区二区三区 | 99在线看 | 女人18毛片a级18毛多水真多 | 一级毛片成人免费看免费不卡 | 91视频最新地址 |