三張圖徹底了解Java中字符串的不變性
該文章是圖說Java系列文章中的一篇
定義一個字符串
String s = "abcd";
s中保存了string對象的引用。下面的箭頭可以理解為“存儲他的引用”。
使用變量來賦值變量
String s2 = s;
s2保存了相同的引用值,因為他們代表同一個對象。
字符串連接
s = s.concat("ef");
s中保存的是一個重新創(chuàng)建出來的string對象的引用。
總結(jié)
一旦一個string對象在內(nèi)存(堆)中被創(chuàng)建出來,他就無法被修改。特別要注意的是,String類的所有方法都沒有改變字符串本身的值,都是返回了一個新的對象。
如果你需要一個可修改的字符串,應該使用StringBuffer 或者 StringBuilder。否則會有大量時間浪費在垃圾回收上,因為每次試圖修改都有新的string對象被創(chuàng)建出來。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java嵌入式開發(fā)的優(yōu)勢及有點總結(jié)
在本篇內(nèi)容里小編給大家整理了關于Java嵌入式開發(fā)的優(yōu)勢及相關知識點內(nèi)容,有興趣的朋友們學習下。2022-11-11Java如何使用遞歸查詢多級樹形結(jié)構(gòu)數(shù)據(jù)(多級菜單)
這篇文章主要介紹了Java如何使用遞歸查詢多級樹形結(jié)構(gòu)數(shù)據(jù)(多級菜單),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07SpringBoot整合Redisson實現(xiàn)分布式鎖
本文主要介紹了SpringBoot整合Redisson實現(xiàn)分布式鎖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11SpringBoot中GlobalExceptionHandler異常處理機制詳細說明
Spring Boot的GlobalExceptionHandler是一個全局異常處理器,用于捕獲和處理應用程序中發(fā)生的所有異常,這篇文章主要給大家介紹了關于Java中GlobalExceptionHandler異常處理機制的相關資料,需要的朋友可以參考下2024-03-03Java中ThreadLocal?導致內(nèi)存?OOM?的原因分析
這篇文章主要介紹了Java中ThreadLocal導致內(nèi)存OOM的原因分析,文章基于Java的相關內(nèi)容展開ThreadLocal導致內(nèi)存OOM的原因分析,需要的小伙v阿布可以參考一下2022-05-05java調(diào)用webService接口的代碼實現(xiàn)
本文主要介紹了java調(diào)用webService接口的代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02