String 与 StingBuffer的区别

转载 2016年08月31日 10:47:06
StringBuffer是可变的而String是不可变的.
而且String用得多个的话会占用不同的内存.
如:String str = "bb";
str = "aa";
前一个bb的内存地址不变,当又给它赋值为aa时它又指向aa的地址.

String   s   ;
每次对s进行赋值操作是都将生成一个新的String实例;
StingBuffer   sb;
sb则不然,它始终是同一个实例
所以在经常动态的改变字符串的值是用StingBuffer效率比较高,java生成一个实例的代价较大。

 

 

String专门定义不变字符串,而StingBuffer用来定义可变字符串。
两者在性能上椰油很大的区别:
String比较适合短的字符串,StingBuffer适合动态增加的字符串。
在实际使用过程中,要求:String+String这种在BS开发结构中不被提倡,对性能影响比较大。而StingBuffer则是比较推荐使用方法。

 

 

另外两者的性能差别原因在于:“String是不变的对象,对它进行修改(+操作)的本质为:new 一个 StringBuilder对象,然后调用StringBuilder类的append方法,最后调用toString方法,并销毁这个StringBuilder对象”

 

String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.

StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
note:不能通过付值符号对他进行付值.
sb = "welcome to here!";//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
中付值的时候可以通过它的append方法.
sb.append("hello");

字符串连接操作中StringBuffer的效率要比String高:

String str = new String("welcome to ");
str += "here

String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能...
  • rmn190
  • rmn190
  • 2007年01月24日 11:56
  • 513816

Java String为什么是不可变类,StringBuffer与StringBuilder区别

熟悉Java的都知道String类是不可变,但String类为什么设计成不可变类,如何做到不可变没有仔细想过。 String为什么设计成不可变类? 1.Java字符串池的设计方式。     Strin...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年03月10日 15:15
  • 2039

string类为什么不能不继承

Java中,是否可以继承String类?为什么? 答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。 public final cl...
  • qq_27231343
  • qq_27231343
  • 2016年09月25日 11:02
  • 932

String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?

本内容是我从各处转载整理得来,是我的学习笔记,如有涉及到版权问题,请给我留言。 或者内容中有不正确的地方,也请各位大神能帮我指出更改,谢谢! 一、区别 1、String是字符串常量,而String...
  • dorapan1987
  • dorapan1987
  • 2015年03月17日 20:36
  • 873

可变字符串Stingbuffer

这里先说写下String和StringBuffer的区别: String: 是对象不是原始类型. 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改都是重新创建...
  • zhangxiaoxiang123
  • zhangxiaoxiang123
  • 2016年07月13日 09:57
  • 295

C++中的字符串操作<cstring>和<string>的区别

cstring和string的区别在哪 string类的实现
  • dcplove
  • dcplove
  • 2015年11月11日 17:12
  • 2006

String类和StringBuffer类的主要差别

String和StringBuffer是面试时,必考的知识点,我们应该进行牢固的掌握。
  • GUO18735177413
  • GUO18735177413
  • 2015年01月16日 15:18
  • 618

Java基础之String、StringBuffer与StringBuilder的区别及应用场景

1 String、StringBuffer与StringBuilder (1)String 字符串常量; /** Strings are constant; their values cann...
  • chenliguan
  • chenliguan
  • 2016年07月14日 18:35
  • 5874

String中==和equal()的区别

==是判断两个字符窜引用是否相等。 .equal()判断的是两个字符窜值是否相等。 不同对象总是产生不同的散列值,即便是他们是相等的值也可以。 因此,如果你想要判断两个字符串是否相等你最好使用.equ...
  • l975764577
  • l975764577
  • 2014年03月09日 19:18
  • 1293

NSString跟Swift String的区别和使用场景

当下Swift项目已经越来越多,可能会经常见到 str as NSString 或者str as String字符串在这两者之间的来回切换,因为有些操作用OC字符串比较方便,而有些操作则相反,熟练掌...
  • ruglcc
  • ruglcc
  • 2016年12月20日 09:12
  • 1344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:String 与 StingBuffer的区别
举报原因:
原因补充:

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