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

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

  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
http://www.javashuo.com/article/p-uukdvibl-ba.html性能

相關文章
相關標籤/搜索