前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这么答才叫有效面试!请谈谈String、StringBuffer和StringBuilder的区别

这么答才叫有效面试!请谈谈String、StringBuffer和StringBuilder的区别

作者头像
Tom弹架构
发布2023-08-10 09:15:51
1070
发布2023-08-10 09:15:51
举报
文章被收录于专栏:Tom弹架构Tom弹架构

可能是因为毕业季,最近有非常多的应届生来咨询我面试相关的问题。这不,今天有一位应届生找到我,说面试被问到这样一道面试题:请谈谈String、StringBuffer和StringBuilder的区别。其实呢,这是一道老生常谈的题,光背八股文还是非常简单的。

既然,大家有这方面的需求,今天我还是给大家分享一下我的理解。

01

值可变性方面

String内部的value值是final修饰的,所以它是不可变类。因此,每次修改String的值,都会产生一个新的对象。

而StringBuffer和StringBuilder是可变类,它们在字符串变更的时候,不会产生新的对象。

02

线程安全方面

String是不可变类,所以它是线程安全的。

StringBuffer是线程安全的,因为它每个操作方法都加了synchronized同步关键字。

而StringBuilder不是线程安全的。如果在多线程环境下对字符串进行操作,建议使用StringBuffer,单线程情况下,才建议使用StringBuilder。

03

性能方面

String的性能是最低的,因为它不可变,意味着在做字符串拼接和修改的时候,需要反复地重新创建新的对象和分配内存。

其次是StringBuffer,它要比String性能高,因为它的可变性使得字符串可以直接被修改。

性能最高的是StringBuilder,因为StringBuffer加了同步锁,而StringBuilder是无阻塞的。

04

数据存储方面

String存储在字符串常量池中,而StringBuffer和StringBuilder存储在堆内存空间。

最后再补充一下, StringBuilder和StringBuffer都是派生自AbstractStringBuilder这个抽象类。

05

总结

以上就是我对String、StringBuffer和StringBuilder的理解。

下方查看历史文章

详解Spring中的Bean是不是线程安全的 都说Java卷,如何实现面试突击? 基于Redis和Mysql的架构如何保证数据一致性

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom弹架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档