首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这么答才叫有效面试!请谈谈String、StringBuffer和StringBuilder的区别

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

作者头像
Tom弹架构
发布于 2023-08-10 01:15:51
发布于 2023-08-10 01:15:51
1700
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Iceberg
一个metadata 存放多个snapshot, snapshot:mainfest_list = 1:1
jasong
2024/11/26
1790
Apache Iceberg源码分析:数据存储格式
Apache Iceberg作为一款新兴的数据湖解决方案在实现上高度抽象,在存储上能够对接当前主流的HDFS,S3文件系统并且支持多种文件存储格式,例如Parquet、ORC、AVRO。相较于Hudi、Delta与Spark的强耦合,Iceberg可以与多种计算引擎对接,目前社区已经支持Spark读写Iceberg、Impala/Hive查询Iceberg。本文基于Apache Iceberg 0.10.0,介绍Iceberg文件的组织方式以及不同文件的存储格式。
大数据真好玩
2021/11/16
2.4K0
Apache Iceberg源码分析:数据存储格式
数据湖实践 | Iceberg 在网易云音乐的实践
本文将从另一个角度为大家介绍 iceberg(结合之前推送的Iceberg快速入门,可以更深入的理解),然后分享 iceberg 在网易云音乐的一些实践,希望对大家能有所帮助。
大数据技术架构
2021/07/05
1.4K0
数据湖实践 | Iceberg 在网易云音乐的实践
Iceberg表格式
Iceberg是介于上层计算引擎与底层存储格式之间的中间层,定义为一种"数据组织格式"并称为表格式,它并不定义数据存储方式,而是定义了数据、元数据的组织方式,向上提供统一的“表”的语义。
Yiwenwu
2025/03/08
2100
[LakeHouse] 数据湖之Iceberg一种开放的表格式
Iceberg项目2017年由Netflix发起, 它是在2018年被Netflix捐赠给Apache基金会的项目。在2021年Iceberg的作者Ryan Blue创建Tabular公司,发起以Apache Iceberg为核心构建一种新型数据平台。
Tim在路上
2022/06/19
1.6K0
[LakeHouse] 数据湖之Iceberg一种开放的表格式
5分钟入门数据湖IceBerg
随着大数据存储和处理需求的多样化,如何构建一个统一的数据湖存储,并在其上进行多种形式的数据分析成了企业构建大数据生态的一个重要方向。Netflix 发起的 Apache Iceberg 项目具备 ACID 能力的表格式成为了大数据、数据湖领域炙手可热的方向。
857技术社区
2023/05/23
7.4K0
5分钟入门数据湖IceBerg
数据湖(八):Iceberg数据存储格式
数据文件是Apache Iceberg表真实存储数据的文件,一般是在表的数据存储目录的data目录下,如果我们的文件格式选择的是parquet,那么文件是以“.parquet”结尾,例如:
Lansonli
2022/06/19
1.8K0
数据湖(八):Iceberg数据存储格式
大数据知识总结(六):数据湖重要原理架构
数据湖是一个集中式的存储库,允许你以任意规模存储多个来源、所有结构化和非结构化数据,可以按照原样存储数据,无需对数据进行结构化处理,并运行不同类型的分析对数据进行加工。
Lansonli
2025/05/24
2010
大数据知识总结(六):数据湖重要原理架构
Flink + Iceberg 在去哪儿的实时数仓实践
摘要:本文介绍去哪儿数据平台在使用 Flink + Iceberg 0.11 的一些实践。内容包括:
大数据技术架构
2021/07/05
1.2K0
Flink + Iceberg 在去哪儿的实时数仓实践
数据湖(十一):Iceberg表数据组织与查询
由于后期需要查看avro文件内容,我们可以通过avro-tool.jar来查看avro数据内容。可以在以下网站中下载avro-tools对应的jar包,下载之后上传到node5节点上:
Lansonli
2022/07/02
2K0
数据湖(十一):Iceberg表数据组织与查询
计算引擎之下、数据存储之上 | 数据湖Iceberg快速入门
目前市面上流行的三大开源数据湖方案分别为:Delta、Iceberg 和 Hudi,但是 Iceberg是一个野心勃勃的项目,因为它具有高度抽象和非常优雅的设计,为成为一个通用的数据湖方案奠定了良好基础。目前 Flink+Iceberg 构建全场景实时数仓已经有了非常良好的实践,本文带大家简单了解下Iceberg。后面五分钟学大数据会有一期专门介绍基于Flink+Iceberg打造T+0实时数仓,本文算是这篇文章的前置铺垫。
五分钟学大数据
2021/07/06
2.2K0
计算引擎之下、数据存储之上 | 数据湖Iceberg快速入门
Iceberg的V2格式
Iceberg在V1的格式中定义了,如何使用不可变类型的文件(Parquet、ORC、AVRO)来管理大型分析型的表,包括元数据文件、属性、数据类型、表的模式,分区信息,以及如何写入与读取。
陈猿解码
2023/09/18
9560
Iceberg的V2格式
基于Flink1.14 + Iceberg0.13构建实时数据湖实战
Iceberg默认支持Hadoop Catalog。如果需要使用Hive Catalog,需要将flink-sql-connector-hive-3.1.2_2.12-1.14.3.jar放到Flink集群所有服务器的lib目录下,然后重启Flink
王知无-import_bigdata
2022/06/05
1.7K0
数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比
Iceberg和Hudi都是数据湖技术,从社区活跃度上来看,Iceberg有超越Hudi的趋势。他们有以下共同点:
Lansonli
2022/07/27
1.5K0
数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比
流数据湖平台Apache Paimon(一)概述
Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。Flink 社区内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向 Streaming 以及 Realtime的数据湖存储项目。2023年3月12日,FTS进入 Apache 软件基金会 (ASF) 的孵化器,改名为 Apache Paimon (incubating)。
Maynor
2023/07/31
3.2K0
流数据湖平台Apache Paimon(一)概述
Apache Paimon核心原理和Flink应用进阶
这是一篇较为完整的介绍Apache Paimon和Flink进阶应用的文章,你最好收藏一波。
王知无-import_bigdata
2023/12/12
2.3K0
Apache Paimon核心原理和Flink应用进阶
流数据湖平台Apache Paimon(三)Flink进阶使用
当Sorted Run数量较少时,Paimon writer 将在单独的线程中异步执行压缩,因此记录可以连续写入表中。然而,为了避免Sorted Runs的无限增长,当Sorted Run的数量达到阈值时,writer将不得不暂停写入。下表属性确定阈值。
Maynor
2023/07/31
4.4K0
流数据湖平台Apache Paimon(三)Flink进阶使用
Flink集成Iceberg小小实战
Apache Iceberg is an open table format for huge analytic datasets. Iceberg adds tables to Presto and Spark that use a high-performance format that works just like a SQL table.
大数据真好玩
2021/07/30
6.1K1
实时数仓:Iceberg
作者:代来,腾讯 CSIG 工程师 背景 互联网技术高速发展的背景下,数据已经成为各大公司的最宝贵资源之一。大数据领域经过近十年的高速发展,无论是离线计算还是实时计算、不管是数据仓库还是数据中台都已深入各大公司的各个业务。在复杂业务的背景下,迫切需要一套高效的大数据架构。以数据仓库为例,经过了几次架构升级。其中,首先诞生的一个比较成熟的流批一体架构就是 Lambda 架构,然后就是升级版的 Kappa 架构。 对于传统的 Lambda 架构,流与批是两条割裂的链路,维护成本高且容易出现数据不一致的情况。新
腾讯云大数据
2022/05/16
1K0
实时数仓:Iceberg
不同表格式如何表示规范文件集?
所有表格式都在元数据文件中存储对一组规范数据和删除数据集的引用。每种表格格式采用的方法略有不同,但大致可以将它们分为两类:
ApacheHudi
2024/11/23
2150
不同表格式如何表示规范文件集?
推荐阅读
相关推荐
Iceberg
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档