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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java基礎學習:java字符型定義不可變

Java基礎學習:java字符型定義不可變

更新時間:2020-04-02 16:16:02 來源:動力節點 瀏覽2222次


  字符串,想必大家最熟悉不過了,通常我們在代碼中有幾種方式可以創建字符串,比如:String s = "Hollis";這時,其實會在堆內存中創建一個字符串對象,其中保存了一個字符數組,該數組中保存了字符串的內容。


Java基礎學習:java字符型定義不可變


  上面的箭頭可以理解為“存儲他的引用”。


  當我們在代碼中連續創建兩個相同的字符串的時候,其實會指向同一個對象。因為當一個字符串被被創建的時候,首先會去這個字符串池中查找,如果找到,直接返回對該字符串的引用。


Java基礎學習:java字符型定義不可變


Java基礎學習:java字符型定義不可變


  但是,如果在程序中明確聲明要新創建一個字符串的話是可以在堆上重新創建一個對象的。如String s = new String("Hollis")


Java基礎學習:java字符型定義不可變

Java基礎學習:java字符型定義不可變


  接著,我們來看兩個字符串中常用的操作:截取和連接會發生什么,是在原來的字符串對象上修改還是重新創建字符串呢?


  字符串的連接。如String s1 = s.concat("Chuang");


Java基礎學習:java字符型定義不可變

  字符串的截取。如String s1 = s.substring(0,2);


Java基礎學習:java字符型定義不可變

  從上圖中我們可以得到一個結論,那就是——字符串是不可變的,無論發生什么操作,一個已經創建好的字符串的內容不會被改變,對它的任何類似修改的操作其實都是新生成了一個字符串對象。


  那么,為什么要定義出不可變對象呢?


  緩存Hashcode


  Java中經常會用到字符串的哈希碼(hashcode)。例如,在HashMap中,字符串的不可變能保證其hashcode永遠保持一致,這樣就可以避免一些不必要的麻煩。這也就意味著每次在使用一個字符串的hashcode的時候不用重新計算一次,這樣更加高效。


  在String類中,有以下代碼:private int hash;


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


  使其他類的使用更加便利


  在介紹這個內容之前,先看以下代碼:


Java基礎學習:java字符型定義不可變

  在上面的例子中,如果字符串可以被改變,那么以上用法將有可能違反Set的設計原則,因為Set要求其中的元素不可以重復。上面的代碼只是為了簡單說明該問題,其實String類中并沒有value這個字段值。


  安全性


  String被廣泛的使用在其他Java類中充當參數。比如網絡連接、打開文件等操作。如果字符串可變,那么類似操作可能導致安全問題。因為某個方法在調用連接操作的時候,他認為會連接到某臺機器,但是實際上并沒有(其他引用同一String對象的值修改會導致該連接中的字符串內容被修改)??勺兊淖址部赡軐е路瓷涞陌踩珕栴},因為他的參數也是字符串。


Java基礎學習:java字符型定義不可變


  不可變對象天生就是線程安全的


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


  總之,String被設計成不可變的主要目的是為了安全和高效。所以,使String是一個不可變類是一個很好的設計。


  以上就是動力節點java培訓機構的小編針對“Java基礎學習:java字符型定義不可變”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产午夜精品理论片久久影视 | 国产一级免费在线观看 | 日韩高清在线日韩大片观看网址 | 亚洲福利一区福利三区 | a级做人爱免费播放 | 91麻豆精品国产91久久久久 | 亚洲一区在线视频 | 妇女毛片 | 亚洲国产成人久久三区 | 国产成人亚洲精品久久 | 真人一级一级特黄高清毛片 | 日韩三级不卡 | 久久精品亚洲一区二区三区浴池 | 人人做人人性 | 成人三级视频在线观看 | 亚洲国产精品久久久久久网站 | 亚洲一一在线 | 国产第一页精品 | 狠狠色丁香婷婷综合欧美 | 福利精品在线 | 国产全黄a一级毛片 | 天天干天天爱天天操 | 香蕉成人啪国产精品视频综合网 | 久久草在线观看 | 不卡影视 | 性刺激的欧美三级视频 | 奇米影视狠狠狠天天777 | 亚洲啪啪免费视频 | 香蕉精品高清在线观看视频 | 亚洲精品老司机综合影院 | 日韩毛片基地一区二区三区 | 妖精视频在线观看网站 | 一级毛片在线观看免费 | 毛片黄片视频 | 一级毛片q片 | 久久精品视频9 | 爱婷婷网站在线观看 | 99热在| 久久综合噜噜激激的五月天 | 国产欧美曰韩一区二区三区 | 欧美香蕉网 |