String、StringBuffer、StringBuilder的区别

  String、StringBuffer、StringBuilder这三个类在字符串处理中都很常用,而且功能上也可以说很相似,那么他们有什么区别呢?

1、首先String是字符串常量,StringBuffer、StringBuilder是字符串变量。为什么说String是字符串常量,用下面的例子说明。

1 String t = "ab";
2 t = t + "c";

这个例子在JVM中的过程其实是,创建t对象,然后赋值“ab”,再创建一个新的t对象,来赋值“ab”+“c”,所以原先的t对象并没有改变,所以称String为字符串常量。而StringBuffer和StringBuiler操作时是不会产生新的对象,是直接对原对象进行操作。

 

2、在执行速度上String<(StringBuffer,StringBuiler)。

通过第1点可以看出,String在操作时会不断产生新的对象,所以执行效率上StringBuffer和StringBuiler比String高。

 

3、StringBuffer是线程安全的,StringBuilder不是线程安全的。

在单线程情况下两者的速度是相差无几的,但是在多线程的情况下StringBuffer为保证线程的安全性,在必要时会做一些同步的操作,所以速度上StringBuffer<StringBuilder。

 

总结:

1、在做少量字符串操作时优先使用String,在做大量字符串操作时优先使用StringBuffer或StringBuilder。

2、单线程环境下优先使用StringBuilder,多线程环境下,为了保证线程安全需要牺牲一点速度,优先使用StringBuffer。

 

posted @   PC君  阅读(301)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示