string和stringBuffer的区别 基本的总结下
一、在java中3个类来负责字符的操作
(1)Character :进行单个字符操作的
(2)String : 对一传字符进行操作,不可以改变类。
(3)StringBuffer:也是对一串字符进行操作,但是可变类。
二、区别
String
(1)是对象但不是原始对象,问不可变对象一旦被创建,就不能修改它的值.
(2)对于已经掺在的String 修改都是重新创建一个新的对象,然后把新值保存进去。
(3)String是final类,不能被继承。
StrngBuffer
(1)是一个可变对象,修改值得时候不会像S天ring那样重新建立对象。
(2)他只能通过构造函数来建立 例如:StringBuffer sb = new StringBufer;
(3)不能通过赋值符号进行赋值,如 sb=“this is jinbo ”// 这是错误的。
(4)对象建立后在内容中分配空间,病初始保存一个NULL,赋值的时候通过append方法 例如:ab。append(” append");
总之:如果在程序中要对字符串进行频繁的修改连接操作的话StringBuffer 要比String效率上高好多。
String str = newString("hello");
str = str+"world";
处理的步骤相当于建立一个StringBuffer 然后调用 append方法,最后StringBuffer的 toString 后 赋值给Str;
测试例子:
String temper str= “12345678910”;
int times = 5000;
long Istart1=System.currentTimeMilis();
String str = "";
for(int 1=0; i<times; i++){
str +=tempstr;
}
long end = System.currentTimeMIlis();
long time = (lend1-Istart1) ;
System.out.Println(time) ;
第二种:
String tempstr = "12345678910";
int times = 5000;
long Istart2=System.currentTimeMilis();
StingBuffer sb = new StringBuffer();
for(int i = 0; i <times; i++){
sb.apend(tempstr)
}
long end2 = System.currentTimeMilis();
long time = (lend2 - Istart2);
System,out.Println(time);
结果如何 自己试试吧