如何复制不是别名的字符串,而是构成该字符串的所有字符的副本?

时间:2019-06-06 14:13:06

标签: java string

我想复制一个字符串,然后能够在不更改整个字符串的情况下对副本进行更改。我尝试使用 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

1 个答案:

答案 0 :(得分:5)

在Java String中实例是不可变,因此无法更改字符串(即具有副作用)。声明:

 strTemplateTemp=strTemplateTemp.replace("\n"," ");

创建一个新字符串,并将对新字符串的引用分配给变量strTemplateTemp

  

字符串是常量;它们的值创建后无法更改。字符串缓冲区支持可变字符串。由于String对象是不可变的,因此可以共享它们。 java.lang.String

有关详细信息,请参见this post