談?wù)勛约簩ava中String、StringBuilder和StringBuffer知識點的理解,也算是對自己學習的記錄和總結(jié)吧。
-
String字符串常量
-
StringBuffer字符串變量(線程安全)
-
StringBuilder字符串變量(非線程安全)
String
所謂常量,即該對象的值已經(jīng)被賦予了,不能再更改。若非要更改,則只能再重新創(chuàng)建另一個對象,在這個新創(chuàng)建的對象上再進行賦值。因此,每次在對String類型的對象進行改變的時候其實都等同于生成了一個新的String對象,然后將指針指向新的String對象,所以經(jīng)常改變內(nèi)容的字符串最好不要用String,因為每次生成對象都會對系統(tǒng)性能產(chǎn)生影響,特別當內(nèi)存中無引用對象多了以后,JVM的GC就會開始工作,那速度是一定會相當慢的。
StringBuffer
所謂變量,即是可以隨時變化的量。如果對StringBuffer對象進行改變,每次結(jié)果都會對StringBuffer對象進行操作,而不是生成新的對象。所以一般字符串要經(jīng)常變化的話使用StringBuffer。
StringBuilder
StringBuilder和StringBuffer類功能基本相似,方法也差不多,主要區(qū)別在于StringBuffer類的方法是多線程安全的,而StringBuilder不是線程安全的,相比而言StringBuilder類會略微快一點。