我在API文档中搜索了deleteCharAt方法。该方法的返回类型为StringBuilder。因此,我认为需要参考变量来放置参考值。

例如,我认为sbuf=sbuf.deleteCharAt(0);sbuf.deleteCharAt(0);更好的表达。

但是,在许多书籍和代码中都使用了后者。

我的想法有什么错误之处?

最佳答案

StringBuilder对象是可变的;调用操作.deleteCharAt()后,引用sbuf仍指向同一对象,并且该对象的内部状态已更改。因此,您可以使用sbuf.deleteCharAt(0);形式调用该方法。

但是,例如,字符串不是可变的。例如,当您调用.substring()方法时,它返回对字符串类的全新实例的引用。因此,如果您编写了str.substring(5);,则返回值将被丢弃,而str仍将具有旧值。相反,对于不可变的对象,您需要编写类似newStr = str.substring(5);的内容。

10-07 19:52