修改当前对象后,如何获取旧的String对象值

时间:2015-08-31 05:33:54

标签: java

如果String是不可变对象,每当我们修改一个String对象时,它都会创建另一个实例,即在内存中我们当前有两个对象。如何获得第一个初始值的值?

public class MutableVsImmutable {

    public static void main(String[] args) {

        String str1 = new String("Dilip");

        System.out.println(str1.hashCode());
        str1 = str1 + " Singh";
        System.out.println(str1.hashCode());

        **// Here I want to get first initialized value of "str1" i.e. "Dilip"** 

    }

}

2 个答案:

答案 0 :(得分:1)

字符串在java中是不可变的,因此当您操作字符串时,会创建一个新对象并丢失对前一个对象的引用。无法恢复它.Java提供了StringBuffer和StringBuilder来处理这种情况。需要注意的重要一点是,当您操作StringBuilder对象时,不会创建新对象。您可以像这样使用它

StringBuilder str1 = new StringBuilder("Dilip");
System.out.println(str1.hashCode());
str1 = str1 + " Singh";
System.out.println(str1.hashCode());

答案 1 :(得分:0)

只需保留对旧字符串的引用

String orig = "ORIG";
String anotherOrigReference = orig;
orig = "CHANGED";
System.out.println(orig); // Prints CHANGED
System.out.println(anotherOrigReference); // PRints ORIG