【Java 基础面试题】string和stringbuffer和stringbuilder的区别是什么(135)

string和stringbuffer和stringbuilder的区别

1、String是字符串常量,而StringBuffer和StringBuilder是字符串变量。由String创建的字符内容是不可改变的,而由StringBuffer和StringBuidler创建的字符内容是可以改变的。

2、StringBuffer是线程安全的,而StringBuilder是非线程安全的。StringBuilder是从JDK 5开始,为StringBuffer类补充的一个单线程的等价类。我们在使用时应优先考虑使用StringBuilder,因为它支持StringBuffer的所有操作,但是因为它不执行同步,不会有线程安全带来额外的系统消耗,所以速度更快。

总结:

关于线程安全,我们要知道一个原理:线程安全的前提的是该类的方法中运用了大量的synchronized关键字去修饰方法;这样一来,就不能同时进行多线程访问,必须要排队访问,所以线程安全的同时呢,也导致效率低下;没有synchronized修饰的类,必然访问效率高,可以同时多线程访问;

String、StringBuilder、StringBuffer共同之处

1、都是字符处理类。

2、来自java.lang包。

3、都实现了接口java.io.Serializable, CharSequence。

4、都是final class不能被继承。

相关推荐
测试员周周4 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
Mahir087 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
杜子不疼.7 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号37 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia7 小时前
Qt——编辑交互功能的实现
开发语言·qt
RyFit8 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码8 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事8 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海8 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠9 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git