对于字符串操作,字符串或sitring缓冲区更快?

时间:2012-05-14 08:44:03

标签: java string

我需要在程序中执行以下许多代码

int index=temp.lastIndexOf("\\n== External links ==\\");
        System.out.println( temp.substring(index))

Indexof,substring,包含所以这些操作在stringbuffer或string中会更好吗?

如果是这样,你为什么要详细说明我?

3 个答案:

答案 0 :(得分:2)

String.substring不会创建新字符串,只会索引到原始字符串中,从而避免了复制字符串内容的成本。因此,如果您需要这样做,String可能就足够了(并且使用起来更简单 - 尤其是StringBuffer / StringBuilder没有contains方法)。< / p>

OTOH你绝对不应该使用StringBuffer因为它是同步的,这会带来性能损失 - 如果你使用的是Java5或更新版,请考虑StringBuilder

最后,唯一确定的方法是使用真实数据衡量您自己环境中的每个选项。

答案 1 :(得分:0)

当要执行大量字符串操作时,建议使用StringBuffer或StringBuilder,因为使用String会在“字符串常量池”中留下大量未引用的String对象。

此外,StringBuilder比StringBuffer更受欢迎(尽管它们具有完全相同的API)因为它的方法不是线程安全的(即同步),因此它们执行得更快。

答案 2 :(得分:0)

StringBuilder上没有contains或StringBuffer。 indexOf和substring被委托给String本身。 StringBuffer和StringBuilder的连接速度更快,但是查看String:获取String类本身