JAVA基础——String,StringBuilder,StringBuffer的区别。

Java中我们常用来修饰字符串的三个定义字符串的是String,StringBuilder,StringBuffer。

一、String

作为程序员最常用的String,我们经常运用String来定义字符串。

例如局部变量,全局变量、类的属性等,我们都会用到String。

查看Java API 底层的String定义为final char value[].

即不可类,任何对String的改变都会生成一个新的变量。


二、StringBuilder

StringBuilder,我们直接看底层



StringBuilder 的底层定义为 char[] value,即StringBuilder 是一个可变类。

对其所指带的变量的改变都不会产生新的变量。

三、StringBuffer



通过底层查看 我们发现StringBuffer底层也是char[] value

那StringBuffer和StringBuilder我们可以确定都是一个可变类,即其所指带的变量的改变都不会产生新的变量。

那么疑问来了 StringBuilder和StringBuffer之间的区别呢?

四、StringBuilder和StringBuffer之间的区别。

StringBuilder和StringBuffer之间的区别,我们可以参照HashTable和HashMap。

我们知道HashTable是线程安全的,而HashMap不是。在单线程下,我们更多的使用的是HashMap,因为HashMap的效率更高。StringBuffer和Stringbuilder和他们的原理和操作基本相同。追查底层我们会发现StringBuffer的append用重载加入了synchronized方法,


而StringBuilder则没有


使用场景:

StringBuffer是线程安全的,适合在多线程的环境中使用。

而StringBuilder不是线程安全的,不支持并发,但效率较高,不适合在多线程环境中使用。

新引入的StringBuilder不是线程安全的,但其在单线程中的使用效率较高。


本文也阅读了一些CSDN大牛的描述,包括测试StringBuilder和StringBuffer的效率问题,以及Stringbuffer和StringBuilder的一些常见接口。经过自己的阅读,还是配合源码才能理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值