三張圖徹底了解Java中字符串的不變性
該文章是圖說Java系列文章中的一篇
定義一個字符串
String s = "abcd";

s中保存了string對象的引用。下面的箭頭可以理解為“存儲他的引用”。
使用變量來賦值變量
String s2 = s;

s2保存了相同的引用值,因?yàn)樗麄兇硗粋€對象。
字符串連接
s = s.concat("ef");

s中保存的是一個重新創(chuàng)建出來的string對象的引用。
總結(jié)
一旦一個string對象在內(nèi)存(堆)中被創(chuàng)建出來,他就無法被修改。特別要注意的是,String類的所有方法都沒有改變字符串本身的值,都是返回了一個新的對象。
如果你需要一個可修改的字符串,應(yīng)該使用StringBuffer 或者 StringBuilder。否則會有大量時間浪費(fèi)在垃圾回收上,因?yàn)槊看卧噲D修改都有新的string對象被創(chuàng)建出來。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
實(shí)例解析Java程序中正則表達(dá)式的貪婪模式匹配
貪婪模式又叫最大匹配,X?、X*、X+、X{n,}都是最大匹配,例如你要用“<.+>”去匹配“a<tr>aava </tr>abb”,也許你所期待的結(jié)果是想匹配“<tr>”,但是實(shí)際結(jié)果卻會匹配到“<tr>aava </tr>”,下面我們就來看具體看一下貪婪模式的使用.2016-05-05
Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
Netty網(wǎng)絡(luò)編程零基礎(chǔ)入門
Netty是一個異步的、基于事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)可維護(hù)、高性能的網(wǎng)絡(luò)服務(wù)器和客戶端,如果你還不了解它的使用,就趕快繼續(xù)往下看吧2022-08-08
Java使用Statement接口執(zhí)行SQL語句操作實(shí)例分析
這篇文章主要介紹了Java使用Statement接口執(zhí)行SQL語句操作,結(jié)合實(shí)例形式詳細(xì)分析了Java使用Statement接口針對mysql數(shù)據(jù)庫進(jìn)行連接與執(zhí)行SQL語句增刪改查等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-07-07

