专栏首页FREE SOLOString、StringBuffer、StringBuilder有什么区别?

String、StringBuffer、StringBuilder有什么区别?

String 是 Java 语言非常基础和重要的类, 提供了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类,被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。

StringBuffer 本质是一个线程安全的可修改字符序列,它保证了线程安全,也随之带来了额 外的性能开销,所以除非有线程安全的需要,不然还是推荐使用它的后继者,也就是 StringBuilder。可以用 append 或者 add 方法,把字符串添加到已有序列的末尾或者指定位 置。

StringBuilder 在能力上和 StringBuffer 没有本质区别,但是它去掉了线程安全的部分,有效减小了开销,是绝大部分情况下进行字符串拼接的首选。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入理解JVM及基础面试题分析(结合多个经典博客综合整理)

    根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。

    葆宁
  • Java内存模式是什么?

    方法区(Method Area)用于存储已被虚拟机加载的类信息、常量、静态常量、即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部...

    葆宁
  • java 线程方法join的简单总结

    在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。但是多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地址进行写入,由...

    葆宁
  • 请简述一下线程的sleep()方法和yield()方法有什么区别?

    (2)线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;

    剑走天涯
  • #每日一题#1

    1、攻击者使用无效IP地址,利用TCP连接的三次握手过程,连续发送会话请求,使受害主机处于开放会话的请求之中,直至连接超时,最终因耗尽资源而停止响应。这种攻击被...

    zhisheng
  • 「图文详解」TCP为啥要3次握手和4次挥手?3次挥手不行吗?

    TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)

    Java_老男孩
  • 【图文讲解】TCP为啥要3次握手和4次挥手?握两次手不行吗?

    客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号 seq=x

    ConardLi
  • 英伟达黄仁勋发布全球最大GPU,超300斤,汽车后备箱大小 | GTC2018

    大数据文摘
  • 三十天学不会TCP,UDP/IP网络编程 - RST的用法

    不知不觉也写了这么多了,继续我的自己的推广大业~完整版可以去gitbook(https://www.gitbook.com/@rogerzhu/)看到。 如果对...

    一心一怿
  • ajax跨域问题-web开发必会

    ajax跨域问题 跨域 同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面...

    Java帮帮

扫码关注云+社区

领取腾讯云代金券