亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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的運行結果一樣,怎么理解“不可變性”?


正在回答

3 回答

  1. hobby+"team" 和 hobby =?hobby+"team"不一樣。前者是新的內存地址,放了這個值,后者新的值,放了值,但是。。。'hobby='又將地址指向原來的地址。和問題不是同一個問題

  2. StringBuilder的內存不變:生成一個StringBuilder,對此數據的更改,比如拼接操作?hobby =?hobby+"team",就1.所說的還是原來的地址。只是這個地址的值變了。而String做拼接操作時,會生成新的內存地址。拼接的值也是在新的內存地址上。StringBuilder的不變是指其內存地址,因此有些情況下,如果平凡調用同一個參數用來拼接,使用StringBuilder的效率比較高

0 回復 有任何疑惑可以回復我~
#1

qq_Takeiteasy_2

HelloWorld.java:8: error: incompatible types: String cannot be converted to StringBuilder hobby = hobby+"team";
2018-12-24 回復 有任何疑惑可以回復我~

指向的值不一樣

當你hhh ="fasfa"; 的時候? 值已經從hhhdas指向了fasfa? ?hhhdas不變,多了一個fasfa? hhhdas沒人使用

但如果用StringBuffer或者StringBuilder的話會把hhdas修改成fasfa吧

0 回復 有任何疑惑可以回復我~

string創建一個對象的值不能改變,stringBuilder創建一個對象之后可以進行修改,不會再創建另一個變量

0 回復 有任何疑惑可以回復我~
#1

守林鳥

String hhh="hhhdas"; hhh="fasfa"; System.out.println(hhh); 這樣得代碼輸出是fasfa,所以你的回答有很大問題!
2018-05-15 回復 有任何疑惑可以回復我~
#2

Fz_3 回復 守林鳥

看前面的課,這里String已經創建一個新的對象。
2018-07-14 回復 有任何疑惑可以回復我~
#3

司馬梵音 回復 守林鳥

是你理解的問題。hhh="fasfa";后,生成了新的內存地址,打印的內容新的內存地址,當然不一樣。但是原來的String hhh="hhhdas";在內存中時不變的。
2018-08-22 回復 有任何疑惑可以回復我~
#4

司馬梵音 回復 守林鳥

stringBuilder創建后的修改,實在原來的地方修改。不會生成新的內存地址
2018-08-22 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消

String和StringBuilder的區別

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號