String 不可變性,為什么沒(méi)懂哪里證明了不可變
String?str?=?"hello"; System.out.println(str?+?"world"); System.out.println(str); //也沒(méi)改變str啊,str不可能變啊,為什么說(shuō)證明了不可變性呢
String?str?=?"hello"; System.out.println(str?+?"world"); System.out.println(str); //也沒(méi)改變str啊,str不可能變啊,為什么說(shuō)證明了不可變性呢
2016-07-22
舉報(bào)
2016-07-22
地址相同說(shuō)明其實(shí)只有一個(gè)對(duì)象,只是變量名不一樣,就像一個(gè)人的名字父母對(duì)你的稱呼是小明,別人對(duì)你的稱呼是真名,但指的都是同一個(gè)人
2018-07-28
package cn.yqg.day3;
public class Test8 {
? ?public static void main(String[] args) {
String str="ss";//內(nèi)存開(kāi)辟空間,存儲(chǔ)ss,將地址賦值給str。
System.out.println(str.hashCode());
str=str+"pp";//新開(kāi)辟一個(gè)內(nèi)存空間存儲(chǔ)str+"pp",并將內(nèi)存地址賦值給str,那么上面的ss存儲(chǔ)地址將沒(méi)有變量來(lái)賦值,變成了垃圾。
System.out.println(str.hashCode());
}
}
兩次輸出結(jié)果不一樣??梢詤⒖糷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比較的是內(nèi)存中的地址,你可以運(yùn)行一下看結(jié)果
2016-07-22
我理解的是這樣的。第一行創(chuàng)建了一個(gè)字符串str,而第二行將str和world連接之后會(huì)分配另外的空間來(lái)存儲(chǔ)這個(gè)新的字符串,所以原來(lái)的str在內(nèi)存中的位置并沒(méi)有改變。