当前位置: 首页 > news >正文

字符串循环拼接,不能用 + 连接, 需要用 StringBuilder 代替

使用 + 操作符拼接字符串的问题:
String str = "start";
for (int i = 0; i < 100; i++) { 
    str = str + "hello";
}
每次执行 str = str + "hello"; 这行代码时,实际上是在创建一个新的 String 对象。这是因为 String 在 Java 中是不可变的,这意味着每次你“改变”一个 String 的值时,实际上是创建了一个新的 String 实例。随着循环次数的增加,这种操作会显著增加内存消耗和垃圾回收的负担,因为每次迭代都会生成一个新的临时对象。

用 StringBuilder 代替+
//重点
StringBuilder stringBuilder = new StringBuilder("start");
for (int i = 0; i < 100; i++) {
    stringBuilder.append("hello");
}
String result = stringBuilder.toString();

首先创建了一个 StringBuilder 实例并初始化为 "start"。然后,在循环中,我们调用 append() 方法来追加 "hello" 字符串。这不会创建新的字符串实例,而是直接在现有的 StringBuilder 实例上进行修改。最后,我们可以调用 toString() 方法将 StringBuilder 转换回一个普通的 String 对象。

这样做可以大幅减少内存使用和提高程序性能,特别是在需要大量字符串拼接的场景下。因此,对于频繁的字符串拼接操作,推荐使用 StringBuilder 或者其线程安全版本 StringBuffer。

http://www.xdnf.cn/news/23545.html

相关文章:

  • 全球唯一电解方式除湿器 / 加湿器 RS1 ROSAHL 微型 易安装
  • Logisim数字逻辑实训——寄存器设计与应用
  • 稳态模型下的异步电机调速【运动控制系统】
  • 《软件设计师》复习笔记(13)——结构化开发方法
  • 2021-11-09 C++倍数11各位和为13
  • 哈电汽轮机携林重型燃机登陆2025涡轮展,5月苏州相见
  • 嵌入式通信协议与编程逻辑完全指南
  • 数据表示与运算
  • MOSI和MISO别连反了
  • Thymeleaf简介
  • zemax非序列棱镜面元理解
  • Logisim数字逻辑实训——计数器设计与应用
  • Pytest 的配置和命令行选项:掌控你的测试执行 (Pytest 系列之七)
  • AbMole推荐——肿瘤类器官加速癌症研究成果产出
  • [Python入门学习记录(小甲鱼)]第6章 函数
  • text-decoration: underline;不生效
  • SS25001-多路复用开关板
  • Google澄清:元描述标签不会直接提升网站排名
  • RESTful API简介
  • RAII资源管理理解
  • z-library电子图书馆最新地址的查询方法
  • vs2019配置点云库PCL1.12.1
  • leetcode222 完全二叉树的节点个数
  • shiro使用
  • Linux 系统编程 day5 进程管道
  • 4.5 发送响应消息
  • 【单倍型理解及计算系列之一】单倍型基本概念以及检测原理
  • 关于网站被注入病毒
  • day1-小白学习JAVA---JDK安装和环境变量配置(mac版)
  • 大模型转换为 GGUF 以及使 用 ollama 运行