String 和StringBuffer的區別?
1.String類的內容一旦聲明之後是不可改變的,改變的只是其內存的指向,而StringBuffer的對象內容是可以改變的。String對象不可修改指的是對象本身不可修改,而不是引用不可修改。
舉個栗子:
假如有 String a="你好"; 意思是聲明一個String類型的引用變量a,在內存中創建一個String對象(值爲"你好"),然後把這個對象的引用賦值給變量a。
a = "hello"; 這行代碼執行的效果是在內存中另外創建了一個String對象(值爲"hello"),然後把這個新對象的引用賦值給變量a,而不是把原來的內存中的那個“你好”的String對象值變爲“hello”。
2.對於StringBuffer,不能像String那樣直接通過賦值的方式完成對象實例化,必須通過構造方法的方式完成。如:
StringBuffer sb=new StringBuffer();
3.StringBuffer類在進行字符串處理時,不生成新的對象,在內存使用上要優於String類。所以在實際使用時,如果經常需要對一個字符串進行修改,例如插入,刪除等操作,使用StringBuffer要更加適合一些。