String是不可变的字符序列,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
@Test public void TestString() { String s1="hello "; String s2="world"; long start=System.currentTimeMillis(); for(int i=0;i<10000;i++){ s1+=s2; } long end=System.currentTimeMillis(); System.out.println("消耗时间:"+(end-start)+"ms");//932ms }
StringBuffer是可变的字符序列,当对他进行修改的时候不会像String那样重新建立对象 ,它只能通过构造函数来建立,对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer中赋值的时候可以通过它的append方法.
@Test public void TestStringBuffer() { StringBuffer s1=new StringBuffer("hello "); String s2="world"; long start=System.currentTimeMillis(); for(int i=0;i<10000;i++){ s1=s1.append(s2); } long end=System.currentTimeMillis(); System.out.println("消耗时间:"+(end-start)+"ms");//3ms }
从结果看来StringBuffer的效率要比String高的多,这和他们的运行机制有关。
s1+=s2运行时在内存中的情况:
可见在s1+s2时系统会在内存中新开辟一块空间然后把S1和S2的内容拷贝过去再把S1重新指向这块新的空间。(不可变的字符序列)
s1=s1.append(s2)运行时在内存中的情况:
可见在s1=s1.append(s2)时系统会在S1指向的内存后开辟内存,然后把S2内容拷贝过去。(可变的字符序列)
相关推荐
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候...
从非常细致的角度分析了String和Stringbuffer的主要区别
string和StringBuffer的区别
String的效率低于StringBuffer,开发时最好选用StringBuffer。
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍...
java面试笔试题String 和StringBuffer的区别
String和StringBuffer深入.doc
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
String ,StringBuffer与StringBuilder的区别
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
介绍了String、StringBuffer、StringBuilder的使用方法,以及理论知识
能更好的利用String和StringBuffer
Java中String和StringBuffer的区别
String及StringBuffer和StringBuilder的区别
JAVA中String与StringBuffer的区别 JAVA中String与StringBuffer的区别 自己的学习笔记总结
主要介绍了java中 String和StringBuffer的区别实例详解的相关资料,一个小的例子,来测试String和StringBuffer在时间和空间使用上的差别,需要的朋友可以参考下
对于新手来说,可以大大区别。 对于老手来说,可以清晰思维。 它包含很多细节问题和注意题,总结是高效的,也是一种精髓。
使用字符串字面量而不是使用new关键字来创建字符串。 大多数情况下字符串是在运行期决定的,使用一个合适的初期容量值初始化的StringBuffer会为字符串连接提供最佳的性能。
StringBuffer和String_区别 java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的...