大战熟女丰满人妻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字符型定義不可變”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲欧美日韩中字综合 | 日本一级毛一级毛片短视频 | 中文字幕国产在线观看 | 精品久久久久久亚洲精品 | 真实的国产乱xxxx | 九九精品视频在线观看九九 | 思99热精品久久只有精品 | 99久久免费国内精品 | 国产美女久久久亚洲 | 精品综合久久久久久97超人 | 九色视屏| 香蕉视频黄在线观看 | 欧美日韩视频在线成人 | 精品国产亚一区二区三区 | 久久久成人影院 | 五月天婷婷免费观看视频在线 | 国产精品手机视频 | 午夜日韩 | 久久久久久久蜜桃 | 日本一区二区三区免费高清在线 | cao美女视频网站在线观看 | 99婷婷久久精品国产一区二区 | 中文字幕在线观看一区 | 黄色影院免费看 | 国产成人综合亚洲一区 | 一级毛片免费视频观看 | 欧美一区二区三区视频在线 | 欧美拍拍视频 | 日韩精品特黄毛片免费看 | 亚洲国产爱 | 亚洲精品一区二区久久这里 | 成人久久18免费网站 | 天天操天天舔 | 国产精品bdsm在线调教 | 久久免费精品一区二区 | 日本人又黄又爽免费视频 | 熊出没之重启未来免费观看 | 久青草国产在线视频亚瑟影视 | 日韩成人精品在线 | 久久精品免观看国产成人 | 99热久久精品免费精品 |