1. 程式人生 > >【扯皮系列】一篇與眾不同的 String、StringBuilder 和 StringBuffer 詳解

【扯皮系列】一篇與眾不同的 String、StringBuilder 和 StringBuffer 詳解

## 碎碎念 這是一道老生常談的問題了,字串是不僅是 Java 中非常重要的一個物件,它在其他語言中也存在。比如 **C++、Visual Basic、C# 等**。字串使用 String 來表示,字串一旦被創建出來就不會被修改,當你想修改 StringBuffer 或者是 StringBuilder,出於效率的考量,雖然 String 可以通過 + 來建立多個物件達到字串拼接的效果,但是這種拼接的效率相比 StringBuffer 和 StringBuilder,那就是心有餘而力不足了。本篇文章我們一起來深入瞭解一下這三個物件。 ## 簡單認識這三個物件 ### String String 表示的就是 Java 中的字串,我們日常開發用到的使用 `""` 雙引號包圍的數都是字串的例項。String 類其實是通過 char 陣列來儲存字串的。下面是一個典型的字串的宣告 ```java String s = "abc"; ``` 上面你建立了一個名為 `abc` 的字串。 字串是恆定的,一旦創建出來就不會被修改,怎麼理解這句話?我們可以看下 String 原始碼的宣告 ![](https://img2020.cnblogs.com/blog/1515111/202006/1515111-20200606094628294-70991660.png) 告訴我你看到了什麼?String 物件是由`final` 修飾的,一旦使用 final 修飾的類不能被繼承、方法不能被重寫、屬性不能被修改。而且 String 不只只有類是 final 的,它其中的方法也是由 final 修飾的,換句話說,Sring 類就是一個典型的 `Immutable` 類。也由於 String