String,StringBuffer,StringBuidler有什么区别?

4 篇文章 0 订阅

String,StringBuffer,StringBuilder有什么区别呢?

大多数面试官会问道这样的一道基础面试题。

区别

  • String是Java语言非常基础也是非常重要的类,提供了构造器和和管理字符串的各种逻辑,它是典型的Immutable类(Immutable是Java的一种不可变类机制),所有的属性都是不可变的(final关键字修饰)。也由于不可变性:类似拼接、裁剪等字符串操作都会产生新的String对象。所有效率低
  • StringBuffer的出现正是为了解决String产生的问题(产生新的String对象)而提供的一个类,我们可以利用append或者add方法,把字符串添加到已有序列的末尾或者指定位置。StringBuffer本质是一个线程安全的可修改的字符串序列,为了保证线程安全,也带来了额外的性能开销。
  • StringBuilder是Java1.5新增的,在能力上和StringBuffer没有区别,但是去掉了线程安全的部分,减小了开销。
名称可变性安全性能效率
Stringfinal 不可变安全字符串操作产生新的String对象,效率低
StringBuffer可变安全有额外的开销维护线程安全,性能开销相对大
StringBuilder可变不安全性能开销小,效率高

其他

  • 什么是Immutable?
    • Immutable不可变的。所以天生线程安全。由于不可变在拷贝的时候不需要额外的复制数据
  • StringBuffer为什么线程安全
    • StringBuffer通过把各种修改数据的方法都加上了synchronized关键字。
  • StringBuffer和StringBuilder为什么可以修改字符串序列?
  • StringBuffer和StringBuilder都继承了AbstractStringBuilder(里面包含了基本操作,区别是否加入synchronized)
  • 底层都是利用可修改的数组(char,JDK9是byte),默认大小是字符串长度16

题外话:谢谢大家观看,有不足之处欢迎大家一起讨论;码字不易,大家喜欢,麻烦点赞哦。


灵魂三问:

  • 有没有觉得技术得不到系统的提升,技术成长慢?
  • 有没面试懵逼,升职加薪难?
  • 有没有想过去大一点的世界看看?

有期望JAVA技术巩固的、Android知识进阶的、期望升职加薪的、Android面试技巧的大厂面试真题的;大家可以加我QQ哦:1070800492。我们一起学习,一起进步!

重要的事情说三遍:

  • 学习、挣钱、自由
  • 学习、挣钱、自由
  • 学习、挣钱、自由

疫情当下,唯有自强

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值