StringBuilder.append和在java中为StringBuilder赋值是否有任何性能差异

时间:2010-10-20 06:35:15

标签: java performance

我有StringBuilder a。我必须将a的内容附加到StringBuilder b。如果b null ,则分配b=a,否则b.append(a.toString())

检查StringBuilder是否 null 是否有任何性能差异?

method_a(StringBuilder a, StringBuilder b) {
    if (b != null) {
        b.append(a.toString();
    } else {
        b=a;
    }
}

1 个答案:

答案 0 :(得分:3)

b = a;将具有更高的性能,因为它只是分配引用。 b.append是一个方法调用,需要复制字符,并且(可能)创建一个新的字符数组。

问题是这是否是你想要的。请注意,ab都是局部变量,因此如果您执行b = a,则可以使用b直到方法结束。但是,它不会影响来电者。

相反,b.append就地修改了对象。没有创建新对象,因此在方法之外可以看到此突变。