我已经在strBuild中附加了一些字符,并将该strBuild放入stringBuildArr中。然后在strBuild上调用java.lang.StringBuilder.delete(int start,int end)函数。

这是一个问题,不仅会从strBuild中删除数据,还会从stringBuildArr中删除数据。

    StringBuilder strBuild = new StringBuilder();
    StringBuilder stringBuildArr[] = new StringBuilder[10];
    strBuild.append("hgfd");
    stringBuildArr[0] = strBuild;
    System.out.println("Output1: "+stringBuildArr[0]);
    strBuild.delete(0, strBuild.length());
    System.out.println("Output2: "+stringBuildArr[0]);


结果


  输出1:hgfd
  
  输出2:


那么,这些stringbuilder和stringbuffer类的存储如何工作?

最佳答案

这里没有“问题”,该数组存储对相同strBuild实例的引用; stringBuildArr[0] = strBuild;没有副本,因为复制StringBuilder不是免费的。但是,如果您想要的副本足够简单,请将其更改为

stringBuildArr[0] = new StringBuilder(strBuild);

08-07 01:44