String類的不可變性舉例——當字符串str重新賦值,需要重寫指定內存區域賦值,不能在原有的value上進行賦值。

 

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.字符串常量池中是不會存儲相同內容的字符串的。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章