既然有String,为什么还要使用StringBuilder?

2023-12-31

我刚刚遇到StringBuilder第一次使用并感到惊讶,因为 Java 已经拥有非常强大的功能String允许追加的类。

为什么要一秒钟String class?

我在哪里可以了解更多信息StringBuilder?


String不允许追加。您调用的每个方法String创建一个新对象并返回它。这是因为String是不可变的——它不能改变其内部状态。

另一方面StringBuilder是可变的。你打电话时append(..)它更改内部字符数组,而不是创建新的字符串对象。

因此,更有效的是:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 500; i ++) {
    sb.append(i);
}

而不是str += i,这将创建 500 个新的字符串对象。

请注意,在示例中我使用了循环。正如 helios 在评论中指出的那样,编译器会自动翻译如下表达式String d = a + b + c类似的东西

String d = new StringBuilder(a).append(b).append(c).toString();

另请注意,有StringBuffer此外StringBuilder。不同的是前者有同步方法。如果将其用作局部变量,请使用StringBuilder。如果碰巧它可能被多个线程访问,请使用StringBuffer(这种情况比较少见)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

既然有String,为什么还要使用StringBuilder? 的相关文章

随机推荐

  • 流星卡在提取中 [电子邮件受保护]

    我遇到一个问题 我在我的项目中运行meteor 并且它开始安装 电子邮件受保护 cdn cgi l email protection 一旦达到 100 就会显示 提取 电子邮件受保护 cdn cgi l email protection 但
  • ggplot2:用直线连接极坐标中的点2

    coord polar曲线 有时您可能不希望这样做 即当空间被认为是离散的而不是连续的时 iris gt gather dim val Species gt group by dim Species gt summarise val mea
  • 为什么需要为 iTerm 中的每个新 shell 获取 .zshrc 源?

    在过去的 3 年里 我每天都将 Iterm2 与 zsh 一起使用 但我有了一台新计算机 不得不重新设置它 问题是当我跑步时 zshrc它工作正常 但我必须在打开的每个新终端窗口上执行此操作 不是一个好的经历 我注意到我没有任何bashrc
  • GWT - FlowPanel 和调整大小

    我有一些Composite我的应用程序中使用的小部件FlowPanel作为他们的主要元素 我想知道的是 我是否需要为此以任何方式调整大小 FlowPanel不实施RequiresResize 所以我不能使用ResizeComposite 但
  • 如何在数据帧中引用广播变量

    我用的是spark1 6 我尝试广播 RDD 但不确定如何访问数据帧中的广播变量 我有两个数据框员工和部门 员工数据框 Emp Id Emp Name Emp Age 1 john 25 2 David 35 部门数据框 Dept Id D
  • 无法下载任何源列表 - android SDK

    我正在尝试从 Sdk Manager 下载平台工具 但当我跑步时 C android sdk cmdline tools tools bin gt sdkmanager platform tools platforms android 28
  • 如何删除两个span元素之间的多余空间?

    我想删除这两个元素之间的额外空间 我尝试过但做不到 这是边距崩溃的问题吗 如何解决这个问题 我怎样才能删除多余的空间 这是我的 HTML 和 CSS body width 250px height 100px background F2F2
  • MsDeploy 远程处理执行清单两次

    I have 为 msdeploy 创建了一个清单以 停止 卸载 复制 安装和启动 Windows 服务 从清单创建了一个包 对远程服务器上的包执行 msdeploy 问题 它执行整个清单两次 尝试过 我修改了 waitInterval 和
  • Laravel 中的分页不起作用

    当我投入我的观点时 问题 gt 链接 我没有看到分页样式 并且该页面不像我在控制器中放入的那样每页需要 6 个帖子 我的职位控制器 类 QuestionsController 扩展控制器 Display a listing of the r
  • 为 LaTeX 编写功能的起点是什么?

    我对它很陌生 但知道它无法处理我需要的特殊东西 我想开发 LaTeX 的功能 问题 有一种东西叫做 TeX 然后是乳胶 然后是 KOMA Script 那么 这三个中的哪一个实际上是驱动所有这些东西的 底层引擎 这是 TeX TeX 不仅是
  • React-Native 中 Android 和 iOS 的图像大小

    在制作iOS应用程序时 我们通常会提供 x 2x 3x图像 根据我对 Android 的了解 大约有六种不同的尺寸 我已经开始研究react native并遇到了图像问题 我的问题是 我是否需要提供所有不同尺寸的图像 即通过结合 iOS 和
  • XML 到制表符分隔文本

    需要XML XSLT专家的帮助 我有 2 个以 XML 格式从系统导出的示例记录 如下所示 我喜欢使用 XSLT 将数据转换为制表符分隔的文本 如下所示https docs google com spreadsheet ccc key 0A
  • 查询@xml变量以获取行集

    我有一个 xml 数据 如下所示 DECLARE XmlContent XML SET XmlContent
  • 理解嵌套列表理解[重复]

    这个问题在这里已经有答案了 我想了解嵌套列表理解 下面 我列出了一个列表理解表达式及其 for 循环等效项 我想知道我的理解是否正确 例如 min row i for row in rows max row i for row in row
  • 使用 datetime64 将字符串转换为 np.array,而不是使用 Pandas

    我正在寻找一种方法 将以 YYYYmmdd 格式给出的日期转换为 dtype datetime64 的 np array 日期存储在另一个 np array 中 但 dtype float64 我正在寻找一种方法来避免熊猫来实现这一目标 我
  • 在erlang接收语句中引入“保存队列”的目的是什么

    我是 erlang 新手 正在学习 Joe Armstrong 的 Programming Erlang 教程 我对8 6中选择性接收中提到的 保存队列 感到困惑 如果消息根本不匹配 为什么不直接丢弃呢 放回邮箱以便后续处理的目的是什么 如
  • 为什么我的 Netbeans Xdebug 会话在一段时间不活动后会超时

    我喜欢 Netbeans 帮助我调试 Magento 应用程序的方式 在 Win 7 64 位上的 XAMPP 中 但我注意到连接在一段时间后似乎超时 断点不再被命中 我必须重新启动调试会话 这很烦人 关于如何延长或禁用调试超时有什么建议吗
  • Tensorflow 中的 RBF 网络有问题吗?

    我正在使用 Tensorflow 开发 RBF 网络 但在第 112 行出现此错误 内容如下 ValueError Cannot feed value of shape 40 13 for Tensor Placeholder 0 whic
  • 使用四元数平滑旋转

    四元数不仅可以描述旋转 还可以描述方向 即从初始 零 位置开始的旋转 我希望模拟从一个方向到另一个方向的平滑旋转 我计算了起始方向startOrientation和末端方向endOrientation并希望将中间方向描述为startOrie
  • 既然有String,为什么还要使用StringBuilder?

    我刚刚遇到StringBuilder第一次使用并感到惊讶 因为 Java 已经拥有非常强大的功能String允许追加的类 为什么要一秒钟String class 我在哪里可以了解更多信息StringBuilder String不允许追加 您