怎样理解String的不变模式

如题所述

第1个回答  推荐于2016-11-08
java中的字符串。 String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。
String 是特殊的引用对象,可以不用new ,就可产生对象。
例如:
String a="abc";
String b="abc";
String c=new String("abc");
这里一共生成了两个对象。"abc"一个对象,new String()一个对象。
a,b,c都在栈区创建了引用,
a,b指向的是常量池中的"abc",new String的值指向的也是常量池中的abc;
※同一个字符串,只会创建一次。
例如:
String a="abc";
a=a+"d";
执行这个操作,实际上产生了3个对象,一个"abc",一个“d”,一个“abcd”。
只是当拼接完成之后,"abc",“d”都失去了引用,成为垃圾对象了。
实际我改变不是"abc"本身,而只是把引用指向了“abcd”;
※对字符串本身操作时,不是改变了对象本身,而是改变了引用。本回答被提问者采纳
相似回答