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

相关文章推荐

StingBuffer

Java中每次使用+=“。。。” 其实都是创建了一个新的String对象,这样做开销很大,所以用StringBuffer。 StringBuffer的用法 1、StringBuffer对象...

String和StringBuffer的区别

  • 2012年10月26日 13:53
  • 4KB
  • 下载

可变字符串Stingbuffer

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

String中==与equals区别验证

  • 2011年11月09日 12:26
  • 8KB
  • 下载

java中String字符串的替换函数:replace与replaceAll的区别

java中String字符串的替换函数:replace与replaceAll的区别
  • educast
  • educast
  • 2016年06月05日 15:54
  • 1195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:String 与 StingBuffer的区别
举报原因:
原因补充:

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