根据源码总结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,应为他不用检查对象锁,所以速度、效率要更高


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

使用StringBuilder或StringBuffer代替string

很多时候,我们在开发项目过程中,我们常常涉及到对字符串的拼接。对于普通的开发者来说,常常使用+的方式进行拼接,例如: string str="abc"; str=str+"cdefghjik"+"l...
  • Mr_Smile2014
  • Mr_Smile2014
  • 2015年09月07日 22:43
  • 1260

String/StringBuffer/StringBuilder详细对比

众所周知,String是由字符组成的串,在程序中使用频率很高。Java中的String是一个类,而并非基本数据类型。 不过她却不是普通的类哦!!!   【镜头1】 String对象的创建 ...
  • ls5718
  • ls5718
  • 2016年07月13日 16:12
  • 715

Java String, StringBuffer和StringBuilder实例

1- 分层继承 2- 可变和不可变的概念 3- String 3.1- 字符串是一个非常特殊的类 3.2- String 字面值 vs. String对象 3.3- String的方法 3...
  • tragfarmer
  • tragfarmer
  • 2016年08月21日 12:26
  • 142

StringBuilder的用法及String,StringBuffer与StringBuilder的区别

声明:本文大部分内容为参考别人的,自己简单汇总整理了一下。String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)简要的说,...
  • u011489043
  • u011489043
  • 2017年03月30日 15:33
  • 545

String、StringBuilder、 StringBuffer 深入分析 源码解析

java学习有一段时间了,但学习的东西都是框架等东西,java基础知识有点遗忘,所以重温一下java基础知识,写写文章里面有错的希望大家指正共同进步~~ 一、String 大家经常会说使用“+”号...
  • QH_JAVA
  • QH_JAVA
  • 2015年06月06日 11:32
  • 6023

String、StringBuffer和StringBuider

String、StringBuffer和StringBuider
  • Alicewu712
  • Alicewu712
  • 2016年05月01日 10:18
  • 106

JDK源码分析之StringBuffer篇

public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializabl...
  • u013341688
  • u013341688
  • 2016年06月23日 14:13
  • 507

String StringBuilder StringBuffer 对比 总结得非常好

转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论。还是觉得有必要让这个讨厌又很可爱的Stri...
  • clam_clam
  • clam_clam
  • 2011年09月28日 19:00
  • 33224

StringBuffer 与 StringBuilder 区别与联系及源码分析

StringBuffer和StringBuilder的共同点: 1、都是用于操作字符串,使用这两个而不使用String的原因是因为String是Final类型,当对字符串操作较多时采用Str...
  • u010854517
  • u010854517
  • 2017年03月08日 10:07
  • 230

String StringBuffer StringBuider 的区别

String就是C++、java、VB等编程语言中的字符串,用双引号引起来的几个字符.如”Abc”,”一天” String类是不可变(final)的,对String类的任何改变,都是返回一个新的S...
  • zhaoyanjun008
  • zhaoyanjun008
  • 2017年01月16日 09:26
  • 171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据源码总结String,StringBuffer,StringBuider差异
举报原因:
原因补充:

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