【问题标题】:Java StringBuilder append methods chainJava StringBuilder 追加方法链
【发布时间】:2017-11-23 14:05:36
【问题描述】:

我有一个问题。 例如:

StringBuilder sb = new StringBuilder();
sb.append("Teacher,");
String s = sb.append(" Good").append("Morning!").toString();

现在在最后一行中,我创建了两个附加方法的链。我知道每个方法 append 方法都会返回一个地址到内存中的字符串(我是对的?对吧?)。所以在第一个sb.append 中,它附加到sb 指向的地址。第一个sb.append 在运行时首先被执行,但是下一个.append 会发生什么?下一个.append 正在使用第一个附加方法返回的地址,还是我错了? 这就是我的意思:

第一个附加 -> sb.append(" Good"); 第二个追加returnedAddr.append("Morning!");

它是这样工作的吗?

【问题讨论】:

标签: java method-chaining


【解决方案1】:

sb.append(" Good") 返回对调用该方法的同一 StringBuilder 实例的引用,这允许您链接另一个 .append() 调用。

StringBuilder sb = new StringBuilder();
sb.append("Teacher,");
String s = sb.append(" Good").append("Morning!").toString();

等价于

StringBuilder sb = new StringBuilder();
sb.append("Teacher,");
sb.append(" Good");
sb.append("Morning!");
String s = sb.toString();

【讨论】:

【解决方案2】:

append() on StringBuilder 只是返回 this 以方便。

String s = new StringBuilder().append("Good").append(" Morning!").toString();

等价于

StringBuilder sb = new StringBuilder();
sb.append("Good");
sb.append(" Morning!");
String s = sb.toString();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多