我已经在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);