[英]Java — StringBuilder using String & not StringBuilder
我在我的代码中使用StringBuilder
而不是String
,以便在所有解析和连接期间使代码节省时间。
但是当我查看它的源代码时, AbstractStringBuilder
的substring()
方法以及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.