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

【StringJoiner 、StringBuilder、StringBuffer 功能解读】

功能对比

特性StringJoinerStringBuilderStringBuffer
设计目的专门用于拼接带分隔符的序列通用的字符串构建器线程安全的字符串构建器
分隔符处理自动处理,不会在末尾添加多余分隔符需要手动控制,易出错需要手动控制,易出错
前缀/后缀内置支持需要手动添加需要手动添加
代码简洁性
线程安全
性能较高(基于StringBuilder)最高较低(因同步开销)

StringJoiner

常用于处理分隔符的相关操作

public class StringJoiner用法 {static void main() {// 只有分隔符StringJoiner joiner1 = new StringJoiner(", ");// param: 分隔符, 前缀, 后缀StringJoiner joiner2 = new StringJoiner(",", "[", "]");StringJoiner joiner = new StringJoiner(", ");joiner.add("Apple");joiner.add("Banana");joiner.add("Cherry");System.out.println(joiner   .toString()); // 输出: Apple, Banana, CherrySystem.out.println("-----------------------------");// 支持链式调用joiner.add("Orange").add("Grape");StringJoiner joiner3 = new StringJoiner(", ", "[", "]");joiner3.add("A").add("B");StringJoiner joiner4 = new StringJoiner("-", "(", ")");joiner4.add("1").add("2");// 注意:只合并内容,不合并前缀后缀joiner3.merge(joiner4);System.out.println(joiner3.toString()); // 输出: [A, B, 1-2]}
}

StringBuilder

循环中的大量字符串操,复杂的条件性字符串构建

1.StringBuilder继承AbstractStringBuilder类
2.实现了Serializable,说明StringBuilder对象是可以串行化(对象可以网络传输,可以保存到文件)
3.StringBuilder 是final类,不能被继承
4.StringBuilder对象的字符序列仍然存放在其父类 AbstractStringBuilder的 char[]value;
因此,字符序列是存放堆中
5.StringBuilder 的方法,没有做互斥的处理,即没有 synchronized 关键字,因此在单线程的
情况下使用StringBuilder
StringBuilder stringBuilder = new StringBuilder();

pubnlic class T{public static void main(String[] args) {StringBuilder sBuilder= new StringBuilder(" ");startTime=System.currentTimeMillis();getF(sBuilder);endTime=System.currentTimeMillis();System.out.println("StringBuilder执行时间= "+(endTime- startTime));}public static void getF(StringBuilder str){for (int i = 0; i <20000 ; i++) {str.append("i");}}
}

StringBuffer

当线程安全比性能更重要时更适合,多线程环境下的字符串操作

public class T {public static void main(String[] args) {long startTime=0L;long endTime=0L;StringBuffer sBuffer = new StringBuffer(" ");startTime=System.currentTimeMillis();getF(sBuffer);endTime=System.currentTimeMillis();System.out.println("StringBuffer执行时间= "+(endTime- startTime));}public static void getF(StringBuffer str){for (int i = 0; i <20000 ; i++) {str.append("i");}}
}

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

相关文章:

  • 中国建设网站简州新城土地整改项目网站内容发布平台源码
  • 天津网站推广外包快看点自媒体平台注册入口和下载
  • 厦门专业做网站的wordpress插件国际化
  • 【pycharm 创建一个线程,在线程函数中增加的日志打印,日志打印了,但是打断点进不去】
  • Rust 练习册 5:Fn、FnMut 和 FnOnce trait
  • 哈尔滨cms模板建站wordpress 支持小工具
  • 上海公司查询网站网站改版 新闻
  • 电阻发热的底层逻辑
  • 虚拟机原理
  • 2003访问网站提示输入用户名密码wordpress右键插件
  • 营销网站建设的目的推广你公司网站
  • 如何建设音乐网站如何注册一个平台
  • 网址导航浏览器下载苏州seo优化外包公司
  • DVL多普勒速度计原理与嵌入式实现
  • vs怎么建手机网站网站开发开题报告范文2019
  • 迅为RK3576开发板编译环境Ubuntu20.04编译配置-修改物理内存
  • 岗贝路网站建设建设网站公司电话号码
  • 国内做网站多少钱特定ip段访问网站代码
  • Android控制三方音乐应用播放方案(实测可用)
  • 泰国金木棉做网站网站适合新手做的网站项目
  • 网站编辑面试问题和答案小程序源码分享
  • 怎么做pc端移动网站北京官方网站网
  • 文山网站建设兼职c 网站开发 书
  • 网站开发排行微网站建设方案财政
  • 为什么没人做物流网站郑州做网站哪个平台好
  • 26.序列模型
  • 安阳网站建设商祺wordpress qq登入设置
  • AtCoder Beginner Contest 430(ABCDEF)
  • 公关做的好的网站网络科技公司一般是做什么的
  • 高端制作网站服务用织梦做外文网站