根据源码总结String,StringBuffer,StringBuider差异

原创 2015年11月18日 10:44:27

一,贴出三者的源码,做比较

String



StringBuffer



StringBuider



这样贴出来一目了然,差异很显然。下面总结归纳一下。

二,总结三者的差异

1,String, StringBuffer, StringBuilder 三者都实现了CharSequence接口,意思是这三者都是字符序列,他们的底层都是用char[]实现的,

2,但String和其他两者有很大的不同,String是不可变的,意思就是你在生成String对象后就不能改变其内部的char[]了,最初的char[]是什么就会一直是什么。这样设计的目的是简化存储(也就是String对象的共享)。
3,而StringBuffer, StringBuilder,则是可变的,意思是你在生成其对象后可以改变其内部的char[],比如扩容,插入,删除等,这两个类是用于动态创建字符串的。这两者都是继承于AbstractStringBuilder,也就是他们具有相同的API(调用方式相同),两者间的不同唯一就是StringBuffer是线程安全的(可用于并发环境),StringBuilder不是线性安全的(不能用于并发环境,如果使用,可能会出现问题)。当在单线程环境时最好使用StringBuilder,应为他不用检查对象锁,所以速度、效率要更高


版权声明:本文为博主原创文章,未经博主允许不得转载。

java中String和StringBuider,StringBuffer的区别

关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下    1.三者在执行速度方面的比较:StringBuilder >  Strin...

java中String stringBuffer StringBuider 深入理解

首先要明白,java只用的wrapper类型都是不可变的,什么是不可变类型呢?顾名思义,就是这种类型的对象一旦创建好之后,无论调用何种方法都无法改变该对象的任何的属性。String 源码中,它的所有属...

String、StringBuider以及StringBuffer的区别和使用场景

String、StringBuider、StringBuffer的区别   String是不可变的对象,因此在每次对String类型进行改变的时候,都会生成一个新的String对象,然后将...

StringBuider源码解析

一、StringBuider和StringBuffer大家都知道String是不可变类,在内存中有个字符串常量池的地方,顾名思义,这块内存保存着各种字符串,它们是不重复的,一个字符串变量引用着这块内存...
  • lkbwei
  • lkbwei
  • 2017年04月18日 11:27
  • 71

从Java源码角度彻底理解String,StringBuilder和StringBuffer的区别

字符串,就是一系列字符的集合。 Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的...
  • hj7jay
  • hj7jay
  • 2016年10月09日 20:31
  • 2825

跟我一起读源码(java)—String、StringBuffer、StringBuilder

写在前面:之所以写这个系列,是因为实习期间相对还算不太忙,想看看源码,学习学习,仅此而已,写的不对的地方,还请大家多多指正(博主用的版本是1.8.0)。。。我不知道如何学习源码,网上源码谈的比较多的都...

StringBuffer/StringBuilder/String关键点源码分析

分析StringBuffer,StringBuilder,String的源码,更好的理解它们。

String & StringBuffer全面总结

  • 2008年01月30日 17:21
  • 184KB
  • 下载

源码角度解析:StringBuffer、StringBuilder、String

长久以来,我们被教导字符串的连接最好用StringBuffer、StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence、StringBuf...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据源码总结String,StringBuffer,StringBuider差异
举报原因:
原因补充:

(最多只允许输入30个字)