面試連環炮系列(二十三): StringBuffer與StringBuild的區別


  1. StringBuffer與StringBuild的區別
    頻繁修改字符串時,建議使用StringBuffer和StringBuilder類。StringBuilder相較於StringBuffer有速度優勢,要求線程安全的情況下,必須使用StringBuffer類。

  2. 為什么拼接String不推薦用加號
    String的值是不可變的,每次對String的操作都會生成新的String對象,不僅效率低下,而且消耗大量內存空間。

  3. 為什么String是不可變的

    1. String類內部所有的字段都是final修飾的。
    2. String類內部所有的字段都是私有的。
    3. String類不能夠被繼承和擴展。
  4. 有什么辦法能夠改變String
    可以通過反射來改變String

  5. String設計成不可變有什么好處

    1. 安全需要:在JDK中Java的類裝載機制通過傳遞的參數(通常是類名)加載類,這些類名在類路徑下。假設String是可變的,攻擊者可能通過自定義類裝載機制損害應用。
    2. 性能需要:不可變對象才可以創建常量池,提高JVM性能。
    3. 線程安全:當多線程訪問時,不可變對象是線程安全的。

參考(部分摘抄的文字版權屬於原作者):

https://blog.csdn.net/u011702479/article/details/82262823
https://www.cnblogs.com/wuchanming/p/9201103.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM