假设我在程序中有以下代码行:
jobSetupErrors.append("abc");
在上述情况中,当jobSetupErrors是一个StringBuilder()时,我看到的情况是:
- 创建一个新的字符串对象并赋值为"abc"
- 将该字符串对象的值分配给现有的StringBuilder对象
jobSetupErrors.append("abc");
logger.info("abc");
在上面的例子中,我们是分别创建了两个字符串对象吗?
如果是这样,那么像这样做是否更为适当?
String a = "abc";
jobSetupErrors.append(a);
logger.info(a);
这是更好的方法吗?请建议。
clever
中使用局部变量而不是字段;但无论如何,问题主要是关于创建字符串的,正如您的示例所示,只涉及一个字符串对象! - user85421clever
仍然更长,因为您需要执行额外的astore_1
操作将 interned 字符串存储到变量中。 - tim_yates