String 不可變性,為什么沒懂哪里證明了不可變
String?str?=?"hello"; System.out.println(str?+?"world"); System.out.println(str); //也沒改變str啊,str不可能變啊,為什么說證明了不可變性呢
String?str?=?"hello"; System.out.println(str?+?"world"); System.out.println(str); //也沒改變str啊,str不可能變啊,為什么說證明了不可變性呢
2016-07-22
舉報
2016-07-22
地址相同說明其實只有一個對象,只是變量名不一樣,就像一個人的名字父母對你的稱呼是小明,別人對你的稱呼是真名,但指的都是同一個人
2018-07-28
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
2016-07-22
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比較的是內存中的地址,你可以運行一下看結果
2016-07-22
我理解的是這樣的。第一行創建了一個字符串str,而第二行將str和world連接之后會分配另外的空間來存儲這個新的字符串,所以原來的str在內存中的位置并沒有改變。