String,StringBuffer與StringBuilder的區別

1、Java String類面試

字符串普遍應用在Java編程中,在Java中字符串屬於對象,Java提供了String類來建立和操做字符串。編程

須要注意的是String的值是不可變的,這就致使每次對String的操做都會生成新的String對象,這樣不只效率低下,並且浪費有限的內存空間。安全

咱們能夠看到,初始String值爲「hello」,而後在這個字符串後面加上新的字符串「world」,這個過程是須要從新在棧堆內存中開闢內存空間的,最終獲得了「hello world」字符串也相應的須要開闢內存空間,這樣短短的兩個字符串,卻須要開闢三次內存空間,不得不說這是對內存空間的極大浪費。爲了應對常常性的字符串相關的操做,Java引入了兩個新的類——StringBuffer類和StringBuild類來對此種變化字符串進行處理。性能

2、StringBuffer 和 StringBuilder 類ui

三者區別:.net

string:不可變字符序列線程

StringBuffer:可變字符序列、線程安全、效率低對象

StringBuilder:可變字符序列、線程不安全、效率高blog

注:內存

String的使用陷阱:

String  ss = "a";

ss +="b";

若是屢次執行這些改變字符串內容的操做,會致使大量副本字符串對象存在內存中,下降效率。若是這樣的操做放在循環中,會極大影響程序的性能。

3、代碼實例

String的拼接與StringBuilder的使用對比,簡單的12個字符串的循環解析拼接,相差了28毫秒,沒有對比就沒有傷害,之後用StringBuilder吧,暫時還不知道這個東西會有什麼弊端,持續觀察吧

天天一道面試題,持續更新@目錄

相關文章
相關標籤/搜索