繁体   English   中英

Java - 使用String而不是StringBuilder的StringBuilder

[英]Java — StringBuilder using String & not StringBuilder

我在我的代码中使用StringBuilder而不是String ,以便在所有解析和连接期间使代码节省时间。

但是当我查看它的源代码时, AbstractStringBuildersubstring()方法以及StringBuilder返回的是String而不是StringBuilder

这背后会有什么想法?

谢谢。

substring方法返回不可变String的原因是,一旦你在StringBuilder获得了一部分字符串,它就必须复制。 它不能给你一个可变的“实时视图”到StringBuilder的内容中间,因为否则你会遇到冲突,其中的变化适用于什么字符串。

因为无论如何都要制作副本,所以它也可能是不可变的:如果你希望通过在它周围构建一个StringBuilder ,你可以很容易地使它变得可变,同时充分理解它与可变原始分离。

要从一个StringBuilder转到另一个包含原始段的另一个,您可以使用:

StringBuilder original = ...;
StringBuilder sub = new StringBuilder().append(original, offset, length);

可以作为original方法提供,但事实并非如此。

除此之外,您应该在进行此类微优化之前对代码进行概要分析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM