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

老生常谈的字符串拼接

作为Java开发者,String拼接是每天都要做的操作,String拼接:用+还是StringBuilder?

  1. 三种方式的性能对比
// 方法1:使用 + 拼接
String result1 = "Hello" + " " + "World" + "!";// 方法2:使用 StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" ").append("World").append("!");
String result2 = sb.toString();// 方法3:使用 String.concat()
String result3 = "Hello".concat(" ").concat("World").concat("!");
  1. 编译器背后的秘密

情况1:编译期优化

// 编译前:
String str = "a" + "b" + "c";// 编译后:
String str = "abc"; // 直接合并成常量!

情况2:循环中的陷阱

// 反例 - 在循环中使用 +
String result = "";
for (int i = 0; i < 100; i++) {result += i; // 每次循环都创建StringBuilder!
}// 正例 - 在循环中使用StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {sb.append(i); // 只创建一个StringBuilder
}
String result = sb.toString();
  1. 熟悉底层原理

问题1:String为什么不可变?

public final class String {private final char value[]; // final修饰,不可变// ...
}

· 线程安全
· 缓存哈希值
· 字符串常量池复用

问题2:StringBuilder和StringBuffer区别?

· StringBuilder:非线程安全,性能高
· StringBuffer:线程安全,性能较低

  1. 实际开发选择指南
// 场景1:少量固定字符串 → 直接用 +
String message = "姓名:" + name + ",年龄:" + age;// 场景2:循环或大量拼接 → StringBuilder
StringBuilder sql = new StringBuilder("SELECT * FROM users WHERE 1=1");
if (name != null) {sql.append(" AND name = '").append(name).append("'");
}
if (age > 0) {sql.append(" AND age = ").append(age);
}// 场景3:已知最终长度 → 设置初始容量
StringBuilder sb = new StringBuilder(1024); // 避免扩容开销
  1. 性能测试数据
// 测试结果参考(10000次拼接):
// + 拼接:约 150ms
// StringBuilder:约 5ms
// StringBuffer:约 8ms

知识要点:

    • 操作符:适合少量拼接,编译器会优化
  1. StringBuilder:适合循环或未知次数的拼接
  2. StringBuffer:需要在多线程环境下使用
  3. 关键区别:+ 在循环中会创建多个StringBuilder对象

记住:在循环中拼接字符串,一定要用StringBuilder!

http://www.dtcms.com/a/526749.html

相关文章:

  • 深圳制作企业网站的公司库存管理软件免费版
  • 潍坊市建设厅网站苏州市建设工程建设中心网站
  • 蓝海国际版网站建设专业做物业网站的公司
  • 为了加强公司网站建设甘肃省建设厅注册中心网站首页
  • 国际网站开发客户网站建设 乐视
  • 高新技术企业网站怎么做做网站绿色和什么颜色搭配
  • wap门户网站网站开发 源码
  • 视频网站顶部效果怎么做的内蒙古自治区住房和城乡建设部网站
  • 做网站用什么配置的笔记本怎么做微信网页制作
  • 什么专业学做网站把自己做的网站进行app封包
  • 制作网站费用号卡分销系统
  • 政务建设网站得必要性旅游网站开发背景及意义
  • 微信免费做邀请函模版网站如何建设高校网站
  • 网站开发费怎么做会计分录免费永久vps服务器
  • 建立平台网站要多久电脑中怎样安装wordpress
  • 多态(1),咕咕咕!
  • xxx网站建设与优化推广网站视频弹窗代码
  • 在线制作网站源码渠道合作一站式平台
  • 个人如何做网站软件效果营销型网站建设
  • 大连网站的建设诚信档案建设网站
  • 做网站关于创新的太原网站制作计划
  • 域名备案与网站备案网站线下推广怎么做
  • 长沙网站建设深圳财务小公司网站
  • 织梦 网站栏目管理 很慢wordpress 安装数据库
  • 做网站的新闻定制型网站建设价格
  • 临安区建设局网站个人做外贸怎样起步
  • 长沙网站建计找网站做网站做网站
  • 滴滴业务模式,盈利模式,增长模式,商业模式
  • 可以自己做网站群晖外网打开wordpress
  • 家装网站建设预算wordpress做seo