String和StringBuilder的區別
代碼實現:
public class HelloWorld {
? ? public static void main(String[] args) {
? ? ? ??
? ? ? ?// 創建一個StringBuilder對象,用來存儲字符串
StringBuilder hobby=new StringBuilder("愛慕課");
System.out.println(hobby);
System.out.println(hobby+"team");
System.out.println(hobby);
}
}
運行結果:
愛慕課
愛慕課team
愛慕課
這個和String的運行結果一樣,怎么理解“不可變性”?
2018-08-22
hobby+"team" 和 hobby =?hobby+"team"不一樣。前者是新的內存地址,放了這個值,后者新的值,放了值,但是。。。'hobby='又將地址指向原來的地址。和問題不是同一個問題
StringBuilder的內存不變:生成一個StringBuilder,對此數據的更改,比如拼接操作?hobby =?hobby+"team",就1.所說的還是原來的地址。只是這個地址的值變了。而String做拼接操作時,會生成新的內存地址。拼接的值也是在新的內存地址上。StringBuilder的不變是指其內存地址,因此有些情況下,如果平凡調用同一個參數用來拼接,使用StringBuilder的效率比較高
2018-05-18
指向的值不一樣
當你hhh ="fasfa"; 的時候? 值已經從hhhdas指向了fasfa? ?hhhdas不變,多了一個fasfa? hhhdas沒人使用
但如果用StringBuffer或者StringBuilder的話會把hhdas修改成fasfa吧
2018-01-25
string創建一個對象的值不能改變,stringBuilder創建一個對象之后可以進行修改,不會再創建另一個變量