【Java】String,StringBuffer和StringBuilder

定义

  • String------字符串类,由多个字符组成得一串数据(字符序列),字符串是是常量
  • StringBuffer------可变的字符序列,线程安全。
  • StringBuilder(jdk1.5)------可变的字符序列,线程不安全的。

String类和StringBuffer类的区别?

1.String长度不可变,一旦赋值,就不能改变,每次都要创建新的空间。
2.StringBuffer内容长度可变,不会浪费太多资源。

StringBuilder类和StringBuffer类的区别?

最主要的区别是两者的线程安全效率的高低,StringBuffer是效率低,但是线程安全,线程安全的可以被多个线程安全使用,其方法大都采用了 synchronized 关键字进行修饰。而StringBuilder没有这个修饰,效率高,可以被认为是线程不安全的。

注意

1.String,StringBufferStringBuilder都是被final修饰的,都不可以被继承改写的。
2.StringBufferStringBuilder都继承自抽象类AbstractStringBuilder
3.三者的执行速度:StringBuilder > StringBuffer > String

总结

String:final修饰,不存在扩容。字符串拼接,截取,都会生成一个新的对象。频繁操作字符串效率低下,因为每次都会生成新的对象。
StringBuilder: 类内部维护可变长度char[] , 初始化数组容量为16,存在扩容, 其append拼接字符串方法内部调用System的native方法,进行数组的拷贝,不会重新生成新的StringBuilder对象。它是非线程安全的字符串操作类,单线程操作字符串缓冲区 下操作大量数据
StringBuffer: 类内部维护可变长度char[], 基本上与StringBuilder一致,但其为线程安全的字符串操作类,大部分方法都采用了Synchronized关键字修改,实现在多线程下的操作字符串的安全性。多线程操作字符串缓冲区 下操作大量数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值