gpt4 book ai didi

string - 为什么在串联中 String 比 StringBuilder 更可取?

转载 作者:行者123 更新时间:2023-12-04 02:01:54 25 4
gpt4 key购买 nike

我下面的方法需要返回一个从字符串连接的字符串。

StringBuilder sb = new StringBuilder();
sb.append("count: ").append(this.count()).append( "\n");

return sb.toString();

在 IntelliJ 中,代码检查建议我将此 StringBuilder 替换为如下所示的字符串:
String sb = "count: " + this.count() + "\n";
return sb

我的印象是 StringBuilder 应该与 append 方法一起使用,用加号替换字符串连接。这个代码检查建议在 IntelliJ 中有意义吗?

最佳答案

您的假设是正确的,即大多数 IntelliJ 检查都鼓励您以“更好”的方式做事。

然而,这并非总是如此。特别是在某些检查“双向”工作的情况下 -> 您必须对什么是“更好”进行自己的判断。

在这种情况下,如果您从一个普通的连接字符串开始:

    return "count: " + count + "\n";

有一些可用的检查 - 将光标放在 "count: " 上并按 alt-enter:
  • 用 String.format() 替换 '+'
  • 用 StringBuilder.append() 替换 '+'
  • 用 java.text.MessageFormat.format() 替换 '+'

  • 如果您选择选项 (2),您将得到:
        return new StringBuilder().append("count: ").append(count).append("\n").toString();

    现在,您可以再次使用 alt-enter 选择“用字符串替换 StringBuilder”来反转更改。

    在这种情况下,您发现了一种双向的检查/重构:它是双向的。其他重构(例如“封装”)仅以一种方式起作用。

    至于什么是“更好” - 您必须权衡 StringBuilder 的性能与可读性和简单性,并自己做出判断 - IntelliJ 只是提供方便的检查来帮助您;)

    关于string - 为什么在串联中 String 比 StringBuilder 更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574451/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com