String、StringBuffer、StringBuilder的區別:
| String | StringBuffer | StringBuilder | |
|---|---|---|---|
| 執行速度 | 最差 | 其次 | 最高 |
| 執行緒安全 | 執行緒安全 | 執行緒安全 | 執行緒不安全 |
| 使用場景 | 少量字串操作 | 多執行緒環境下的大量操作 | 單執行緒環境下的大量操作 |
String:
對于String來說,是把資料存放在了常量池中,因為所有的String,默認都是以常量形式保存,且由final修飾,因此在執行緒池中它是執行緒安全的,因為每一個String當被創建好了以后,他就不再發生任何變化,但是它的執行速度是最差的,
我們要創建String的時候,他在常量池中對這些資訊進行處理,如果在程式中出現了大量字串拼接的作業,效率是非常底下的,
因此使用場景是在少量字串操作的時候才建議直接使用String來操作,
StirngBuffer:(效率不如StringBuilder,但遠比String要高)
StringBuffer相對于StringBuilder效率要相對低一點,但也遠比String要高的多,效率低的原因:對于StringBuffer來說更多的考慮到了多執行緒的情況,在進行字串操作的時候,它使用了synchronize關鍵字,對方法進行了同步處理,
因此StringBuffer適用于多執行緒環境下的大量操作,
StringBuilder:(沒有考慮執行緒安全問題)
執行緒安全與執行緒不安全:
在進行多執行緒處理的時候,如果多個執行緒對于這一個物件同時產生操作,會產生預期之外的結果,對于StringBuilder來說,執行效率雖然高,但是因為執行緒不安全,所以不建議在多執行緒的環境下對同一個StringBuilder物件進行操作,
因此StringBuilder適用于單執行緒環境下的大量字串操作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/234294.html
標籤:其他
上一篇:Qt制作安裝包程式
