String不可变性的实例

String对象一旦被创建就是固定不变的了,对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象

public class TestString1 {
    String s = "abc";
    public void change(String s){
        System.out.println(s);//abc
        s = "def";
        System.out.println(s);//def
    }
    public static void main(String[] args) {
        TestString1 testString1 = new TestString1();
        testString1.change(testString1.s);
        System.out.println(testString1.s);//abc
    }
}

在这里,赋给形参的是堆内存的地址,而形参重新赋值是需要在堆内存中重新创建一个对象的,而这个对象只是形参重新指向的,并不会改变实参的指向,所以实参不会发生改变。从表现上来讲,String更像一个基础变量,形参改变,实参却不会改变。

posted @ 2021-02-14 09:35  -太阳-  阅读(111)  评论(0)    收藏  举报