【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不能被继承。

相关推荐
java1234_小锋16 分钟前
Java高频面试题:JVM内存为什么要分代?
java·开发语言·jvm
筱砚.17 分钟前
C++——lambda
开发语言·c++·算法
两个人的幸福online19 分钟前
php开发者 需要 协程吗
android·开发语言·php
linux修理工21 分钟前
下载亚马逊Corretto 17的方法(OpenJDK 17发行版)
java·运维·服务器
guygg8834 分钟前
基于ADMM的MRI-PET高质量图像重建算法MATLAB实现
开发语言·算法·matlab
小小程序员mono34 分钟前
JS 与 Vue Router 导航方式对比
开发语言·javascript·vue.js
moonlight030436 分钟前
类加载子系统
java·jvm·算法
feifeigo12337 分钟前
基于MATLAB的V-BLAST结构BER仿真
开发语言·matlab
lly2024061 小时前
Perl 数据库连接
开发语言
小白-Tester1 小时前
2026最新Postman安装教程[简单易懂]附安装包
开发语言·lua