面試連環(huán)炮系列(二十三): StringBuffer與StringBuild的區(qū)別
-
StringBuffer與StringBuild的區(qū)別
頻繁修改字符串時,建議使用StringBuffer和StringBuilder類。StringBuilder相較于StringBuffer有速度優(yōu)勢,要求線程安全的情況下,必須使用StringBuffer類。 -
為什么拼接String不推薦用加號
String的值是不可變的,每次對String的操作都會生成新的String對象,不僅效率低下,而且消耗大量內(nèi)存空間。 -
為什么String是不可變的
- String類內(nèi)部所有的字段都是final修飾的。
- String類內(nèi)部所有的字段都是私有的。
- String類不能夠被繼承和擴(kuò)展。
-
有什么辦法能夠改變String
可以通過反射來改變String -
String設(shè)計成不可變有什么好處
- 安全需要:在JDK中Java的類裝載機(jī)制通過傳遞的參數(shù)(通常是類名)加載類,這些類名在類路徑下。假設(shè)String是可變的,攻擊者可能通過自定義類裝載機(jī)制損害應(yīng)用。
- 性能需要:不可變對象才可以創(chuàng)建常量池,提高JVM性能。
- 線程安全:當(dāng)多線程訪問時,不可變對象是線程安全的。
參考(部分摘抄的文字版權(quán)屬于原作者):
https://blog.csdn.net/u011702479/article/details/82262823
http://www.rzrgm.cn/wuchanming/p/9201103.html
博客作者:編碼專家
公 眾 號:編碼專家
獨立博客:codingbrick.com
文章出處:http://www.rzrgm.cn/xiaoyangjia/p/11833857.html
本文版權(quán)歸作者所有,任何人或團(tuán)體、機(jī)構(gòu)全部轉(zhuǎn)載或者部分轉(zhuǎn)載、摘錄,請在文章明顯位置注明作者和原文鏈接。
公 眾 號:編碼專家
獨立博客:codingbrick.com
文章出處:http://www.rzrgm.cn/xiaoyangjia/p/11833857.html
本文版權(quán)歸作者所有,任何人或團(tuán)體、機(jī)構(gòu)全部轉(zhuǎn)載或者部分轉(zhuǎn)載、摘錄,請在文章明顯位置注明作者和原文鏈接。
浙公網(wǎng)安備 33010602011771號