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

 

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