????? 在java中,賦值和clone的區(qū)別,相信java程序員都知道,就是對于前者,被賦值的變量指向的是內(nèi)存中的同一塊地址,而對于后者,則是為clone的變量分配一塊新的內(nèi)存,也就是指向一個新的對象。
????? 基于此,很容易得出一個結(jié)論,就是對于被賦值的變量,如果改變該變量指向的對象,則賦值的變量,也會指向這個新的對象。但是java中有定義了很多類型,這些類型的對象一旦創(chuàng)建,即為只讀,也就是不滿足上面的結(jié)論,最常見的例子就是String類型,譬如如下代碼:
String s1="aa";
String s2="aaaa";
s2=s1;
s1="aabb";
System.out.println(s1);
System.out.println(s2);
結(jié)果將是:
aabb
aa
而不是想象中的:
aabb
aabb
????? 基于此,很容易得出一個結(jié)論,就是對于被賦值的變量,如果改變該變量指向的對象,則賦值的變量,也會指向這個新的對象。但是java中有定義了很多類型,這些類型的對象一旦創(chuàng)建,即為只讀,也就是不滿足上面的結(jié)論,最常見的例子就是String類型,譬如如下代碼:
String s1="aa";
String s2="aaaa";
s2=s1;
s1="aabb";
System.out.println(s1);
System.out.println(s2);
結(jié)果將是:
aabb
aa
而不是想象中的:
aabb
aabb