-
StringBuffer與StringBuild的區別
頻繁修改字符串時,建議使用StringBuffer和StringBuilder類。StringBuilder相較於StringBuffer有速度優勢,要求線程安全的情況下,必須使用StringBuffer類。 -
為什么拼接String不推薦用加號
String的值是不可變的,每次對String的操作都會生成新的String對象,不僅效率低下,而且消耗大量內存空間。 -
為什么String是不可變的
- String類內部所有的字段都是final修飾的。
- String類內部所有的字段都是私有的。
- String類不能夠被繼承和擴展。
-
有什么辦法能夠改變String
可以通過反射來改變String -
String設計成不可變有什么好處
- 安全需要:在JDK中Java的類裝載機制通過傳遞的參數(通常是類名)加載類,這些類名在類路徑下。假設String是可變的,攻擊者可能通過自定義類裝載機制損害應用。
- 性能需要:不可變對象才可以創建常量池,提高JVM性能。
- 線程安全:當多線程訪問時,不可變對象是線程安全的。
參考(部分摘抄的文字版權屬於原作者):
https://blog.csdn.net/u011702479/article/details/82262823
https://www.cnblogs.com/wuchanming/p/9201103.html