字串 String和StringBuffer的區別(從程式碼講解)
阿新 • • 發佈:2019-01-06
Java面試中經常問到字串,下面是根據百度面試整理出來的內容:
一、String和StringBuffer有什麼區別?
String的長度是不可變的,StringBuffer的長度是可變的。
如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法。
二、程式碼舉例
public class StringDemo { public static void main(String[] args){ String a1 = new String("hello "); a1 += "world"; System.out.println("a1 = "+a1); StringBuffer a2 = new StringBuffer("hello ").append("world"); System.out.println("a2 = "+a2); } }
a1和a2的區別:
a1生成了3個字串物件,即在記憶體堆中開闢了三塊空間。分別是:new String的一個hello物件;賦值給a1的一個物件;a1 += 的一個物件
a2生成了1個字串物件,即hello world
一般公司規定:String用 + 號,超過3個,就要用StringBuffer
三、詳解
String str = “hello”;
建立1個物件,即”hello”字串,JVM的字串快取池會快取這個字串
String str = new String(“hello”);
建立2個物件,JVM的字串快取池中的”hello”字串,str則是該物件的引用,因此共建立2個物件。(str所引用的String物件底層包含一個char[] 陣列,這個陣列中存放了h、e、l、l、o字元)
四、書上內容參考