1. 程式人生 > >StringBuilder和StringBuffer還有String的區別

StringBuilder和StringBuffer還有String的區別

StringBuilder和StringBuffer還有String的區別
String是字元常量,而StringBuilder和StringBuffer是字元變數,所以後者是可以改變的,而前者是不可以改變的String存在JVM的垃圾回收機制

在執行速度上來說
StringBuilder ------>StringBuffer------>String

為什麼String執行速度慢?
因為存在垃圾回收機制,String a=“abc” a=a+“afd”; 這種情況下貌似沒有建立新的物件,其實上是建立了新的物件
1首先a的值賦值一個新的變數a
2把值賦給新的變數
3把原來建立的a讓JVM自動進行垃圾回收
所以對於String的操作來說就是不斷的建立物件然後垃圾回收,所以會很慢

StringBuilder 快的原因就是變數,所以會很快,直接對物件進行更改。跟常量是不一樣的,但是如果String直接自己進行復制的話要比StringBuilder前很多

StringBuffer要比Stringbuilder安全,原因就是在方法上加了synchronize。所以要安全很多,加了執行緒安全。