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

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

String 不可變性,為什么沒懂哪里證明了不可變

String?str?=?"hello";
System.out.println(str?+?"world");
System.out.println(str);
//也沒改變str啊,str不可能變啊,為什么說證明了不可變性呢


正在回答

4 回答

地址相同說明其實只有一個對象,只是變量名不一樣,就像一個人的名字父母對你的稱呼是小明,別人對你的稱呼是真名,但指的都是同一個人

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

花小明 提問者

非常感謝!
2016-07-25 回復 有任何疑惑可以回復我~

package cn.yqg.day3;


public class Test8 {

? ?public static void main(String[] args) {

String str="ss";//內存開辟空間,存儲ss,將地址賦值給str。

System.out.println(str.hashCode());

str=str+"pp";//新開辟一個內存空間存儲str+"pp",并將內存地址賦值給str,那么上面的ss存儲地址將沒有變量來賦值,變成了垃圾。

System.out.println(str.hashCode());

}

}

兩次輸出結果不一樣??梢詤⒖糷ttps://www.cnblogs.com/zzuli/p/9381266.html

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

String str1 = "hello";
String str2 = str1;
System.out.println(str1 == str2);
str2 = str2 + " world";
System.out.println(str1);
System.out.println(str2);
System.out.println(str1 == str2);

str1 == str2比較的是內存中的地址,你可以運行一下看結果

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

qq_夢中虔誠_03693510

第一次相等的,在內存中是同一個地址,第二次不等了,因為str2的地址由于修改,創建了新的字符串,地址改變了
2016-07-22 回復 有任何疑惑可以回復我~
#2

花小明 提問者 回復 qq_夢中虔誠_03693510

我知道String是一個特殊類,那String 創建的str1是對象還是什么,我看2.2節里說的這種創建方法是創建的對象,而str1==str2比較的是引用地址等或不等吧,結果相等,但是兩個對象怎么能共用一個地址呢?我感覺我要炸了...
2016-07-22 回復 有任何疑惑可以回復我~

我理解的是這樣的。第一行創建了一個字符串str,而第二行將str和world連接之后會分配另外的空間來存儲這個新的字符串,所以原來的str在內存中的位置并沒有改變。

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

舉報

0/150
提交
取消

String 不可變性,為什么沒懂哪里證明了不可變

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

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

幫助反饋 APP下載

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

公眾號

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