三張圖徹底了解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類的所有方法都沒有改變字符串本身的值,都是返回了一個新的對象。
如果你需要一個可修改的字符串,應(yīng)該使用StringBuffer 或者 StringBuilder。否則會有大量時間浪費在垃圾回收上,因為每次試圖修改都有新的string對象被創(chuàng)建出來。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
Netty網(wǎng)絡(luò)編程零基礎(chǔ)入門
Netty是一個異步的、基于事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)可維護、高性能的網(wǎng)絡(luò)服務(wù)器和客戶端,如果你還不了解它的使用,就趕快繼續(xù)往下看吧2022-08-08
Java使用Statement接口執(zhí)行SQL語句操作實例分析
這篇文章主要介紹了Java使用Statement接口執(zhí)行SQL語句操作,結(jié)合實例形式詳細分析了Java使用Statement接口針對mysql數(shù)據(jù)庫進行連接與執(zhí)行SQL語句增刪改查等相關(guān)操作技巧與注意事項,需要的朋友可以參考下2018-07-07

