黑马程序员技术交流社区

标题: string和stringbuffer有什么区别?什么时候用哪个? [打印本页]

作者: 陈善奔    时间: 2013-12-26 20:44
标题: string和stringbuffer有什么区别?什么时候用哪个?
本帖最后由 陈善奔 于 2013-12-27 11:49 编辑

string和stringbuffer有什么区别?什么时候用哪个?
作者: 刘旭升    时间: 2013-12-26 20:52
本帖最后由 刘旭升 于 2013-12-26 21:54 编辑

String专门定义不变字符串,而StingBuffer用来定义可变字符串。
两者在性能有很大的区别:String比较适合短的字符串,StingBuffer适合动态增加的字符串
过程比较:
String s ;每次对s进行赋值操作是都将生成一个新的String实例;
StingBuffer sb;sb则不然,它始终是同一个实例。所以在经常动态的改变字符串的值是用StingBuffer效率比较高,java生成一个实例的代价较大。测试反应时间:
  1. package test;
  2. public class string {
  3.         public static void main(String[]args){
  4.                 String s = "";
  5.                 for(int i=0;i<10000;i++)
  6.                 {
  7.                         s=s+(char)i;
  8.                 }
  9.                 System.out.println("s="+s);
  10.         }
  11. }
复制代码
  1. package test;

  2. public class Stringbuffer {
  3.         public static void main(String[]args){
  4.                 StringBuffer s =new StringBuffer("");
  5.                 for(int i=0;i<10000;i++)
  6.                 {        i=(char)i;
  7.                         s.append(i);
  8.                 }
  9.                 System.out.println("s="+s);
  10.         }
  11. }
复制代码






作者: 静心远行    时间: 2013-12-26 21:15
楼上正解,同样受教了

作者: kun1990    时间: 2013-12-26 21:15
Sring的字符串的长度是固定的,定义了就不能够改变的,而StringBuffer的长度是可变的,其初始化的长度为16,但两者之间是可以相互转换的。
作者: 菜不鸟    时间: 2013-12-27 11:45
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。当你知道字符数据要改变的时候你就可以使用StringBuffer
String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.
StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
note:不能通过付值符号对他进行付值.
sb = "welcome to here!";//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
中付值的时候可以通过它的append方法.
sb.append("hello");
字符串连接操作中StringBuffer的效率要比String高:
看代码,
经测试:打印26个字母重复加用了46秒左右。
而下面的代码是用StringBuffer
String tempstr = "abcdefghijklmnopqrstuvwxyz";
int times = 5000;

结果为16秒,可见StringBuffer效率高





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2