Java - 使用String而不是StringBuilder的StringBuilder

Roa*_*oam 3 java string stringbuilder

我正在使用StringBuilder,而不是String在我的代码中努力使代码在所有解析和连接期间节省时间.

但是当我查看它的来源时,substring()方法 AbstractStringBuilder又因此StringBuilder返回a String而不是a StringBuilder.

这背后会有什么想法?

谢谢.

das*_*ght 6

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

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