我想复制一个字符串,然后能够在不更改整个字符串的情况下对副本进行更改。我尝试使用
String strTemplateTemp=new String(strTemplate);
代替
String strTemplateTemp=strTemplate;
我也尝试使用clone
,但收到一条错误消息,指出克隆方法不可见:String strTemplateTemp=strTemplate.clone();
我的代码
DefaultListModel<String> getAllMacrows()
{
DefaultListModel<String> rows= new DefaultListModel<String>();
int pes=0;
int nameStart;
int parEnd;
String row;
String strTemplateTemp=new String(strTemplate);
strTemplateTemp=strTemplateTemp.replace("\n"," ");
// now both strTemplateTemp and strTemplate have chnaged
// want just strTemplateTemp to chnage
答案 0 :(得分:5)
在Java String
中实例是不可变,因此无法更改字符串(即具有副作用)。声明:
strTemplateTemp=strTemplateTemp.replace("\n"," ");
创建一个新字符串,并将对新字符串的引用分配给变量strTemplateTemp
。
字符串是常量;它们的值创建后无法更改。字符串缓冲区支持可变字符串。由于String对象是不可变的,因此可以共享它们。 java.lang.String
有关详细信息,请参见this post。