1.String內部定義了final char[ ] value用於存儲字符串數據。代表不可變的字符序列。
簡稱:不可變性。
體現:1.當對字符串重新賦值時,需要重寫指定內存區域賦值,不能使用原有的value進行賦值。
public class StringTest {
String str = new String("good");
char[] ch = { 't', 'e', 's', 't' };
//放在中,基本數據類型傳遞的是值,引用數據類型傳遞的是地址值
//1.String傳遞的是地址值,2.String不可變,當字符串str重新賦值,需要重寫指定內存區域賦值,不能在原有的value上進行賦值。
// char類型,數組不是不可變性的
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'b';
}
public static void main(String[] args) {
StringTest ex = new StringTest();
ex.change(ex.str, ex.ch);
//值不變
System.out.println(ex.str);//good
//值改變,char[]是數組
System.out.println(ex.ch);//best
}
}
2. 當對現有的字符串進行連接操作時,也需要重新指定內存區域賦值,不能使用原有的value進行賦值。
3. 當調用String的replace()方法修改指定字符或字符串時,也需要重新指定內存區域賦值,不能使用原有的value進行賦值。
附錄:String:字符串,使用一對""引起來表示。 1.String聲明爲final的,不可被繼承 2.String實現了Serializable接口:表示字符串是支持序列化的。 實現了Comparable接口:表示String可以比較大小 3.String內部定義了final char[] value用於存儲字符串數據 4.String:代表不可變的字符序列。簡稱:不可變性。 體現:1.當對字符串重新賦值時,需要重寫指定內存區域賦值,不能使用原有的value進行賦值。 2. 當對現有的字符串進行連接操作時,也需要重新指定內存區域賦值,不能使用原有的value進行賦值。 3. 當調用String的replace()方法修改指定字符或字符串時,也需要重新指定內存區域賦值,不能使用原有的value進行賦值。 5.通過字面量的方式(區別於new)給一個字符串賦值,此時的字符串值聲明在字符串常量池中。 6.字符串常量池中是不會存儲相同內容的字符串的。