import arrow
utc = arrow.utcnow()
utc.to('Asia/Shanghai').date()
我们假设我们有一个字符串StringBuilder s=new StringBuilder(str);
s.deleteCharAt(0);
并使用"abcde"
函数删除字符deleteCharAt()
。此功能是否也删除内存位置。字符'c'
位于索引2.删除字符后,它是用空格替换字符还是删除索引和内存位置?
答案 0 :(得分:0)
调用deleteCharAt
实际执行此代码:
System.arraycopy(value, index+1, value, index, count-index-1);
count--;
这意味着它会复制字符串的其余部分以覆盖已删除的字符。所以在你的例子中,它会复制“de”来覆盖'c',使它看起来像“abdee”,然后count--
使它最终成为“abde”。
所以是的,你可以假设它删除了内存位置,而不是用空字符替换它。
答案 1 :(得分:0)
正如Islan Hassan所说,要删除的char后面的字符串部分被内部char数组中的一个char复制回来,f.Tag
用来存储字符串。但是它不会缩小数组的大小,因此以这种方式使用StringBuilder
将不会释放任何内存。而是保持deleteCharAt
的容量。现在可以在StringBuilder
中的字符串末尾提供额外字符的空格,该字符串将用于某些后续插入或追加操作。