【问题标题】:Java: toString vs. string concatentation?Java:toString 与字符串连接?
【发布时间】:2015-10-29 02:43:23
【问题描述】:

在将对象转换为字符串表示时,是否有理由更喜欢字符串连接或调用toString

字符串连接是否会导致对象的toString 方法被调用?

String s;
Properties p = System.getProperties();
s = p.toString();
s = "" + p;

【问题讨论】:

  • 基本上,连接涉及一个额外的StringBuilder
  • @SotiriosDelimanolis,这是偏爱其中一个的理由吗?这不是重复的问题。
  • p.toString() 不涉及新对象。 "" + p 涉及一个新对象。 (虽然我认为"" 可以被智能编译器删除。)在那之后,一切都是意见,看起来更好。
  • 所以你的回答是“没有理由偏爱一个”?

标签: java string


【解决方案1】:

p.toString() 更好。

当你说 s=""+p 时,编译器会做这样的事情:

{
    StringBuilder sb = new StringBuilder();
    sb.append("").append(p.toString());
    s=sb.toString();
}

所以,是的,""+p 确实意味着 p.toString() 被调用,但它也增加了很多额外的工作。

可能发生的最好的事情是编译器认识到它与 p.toString() 相同并只是调用它,但你不应该指望它。

【讨论】:

  • 我认为是String.valueOf(p),而不是p.toString(),尽管前者在p != null 时调用后者。
猜你喜欢
  • 2015-01-13
  • 2011-11-09
  • 2011-12-06
  • 2011-06-01
  • 1970-01-01
  • 2016-07-19
  • 2021-01-26
  • 2011-05-11
相关资源
最近更新 更多