在java中,StringBuilder.append和为StringBuilder赋值之间是否存在性能差异

在java中,StringBuilder.append和为StringBuilder赋值之间是否存在性能差异,java,performance,Java,Performance,我有一个StringBuilder a。我必须将a的内容附加到StringBuilder b。如果b为null,则分配b=a,否则分配b.append(a.toString()) 检查StringBuilder是否为null时是否存在性能差异 b=a将具有更高的性能,因为它只是分配一个引用b.append是一个方法调用,需要复制字符,并(可能)创建一个新的字符数组 问题是这是否是你想要的。请注意,a和b都是局部变量,因此如果使用b=a,则可以使用b,直到方法结束。但是,它不会影响调用者 相反,b

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

检查
StringBuilder
是否为
null
时是否存在性能差异


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

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


相反,
b.append
在适当的位置修改对象。没有创建新对象,因此此变异在方法外部可见。

请正确格式化代码并将其突出显示为代码。“b=a”根本不起作用,中的更改仅在您自己的方法内部可见,它对外部代码没有任何作用,而外部代码将ref插入a和bhow中,当这两个代码执行不同的操作时(除非第一个StringBuilder为空),您会担心性能问题吗?我没有得到
,相反,b.append会在适当的位置修改对象。没有创建新对象,因此此变异在方法外部可见
。它仍然是一个局部变量,对吗?因此,它不能在被调用方的作用域之外被引用,因此不会被引用visible@darkie15:StringBuilder在方法外部创建并传入。所以外面会看到他们发生了什么(在追加案例中)。@Thilo:Aahh明白了。遗漏了参数。
method_a(StringBuilder a, StringBuilder b) {
    if (b != null) {
        b.append(a.toString();
    } else {
        b=a;
    }
}