如果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"**
}
}
答案 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