----------------------------------------------------------------------------------------------------------------
1.在使用到到String到时候每次用到这个常亮到时候,都会在内存中创建一个新到对象,然后在对其进行赋值,
而不是使用原来到常量,当其使用完流之后,再由垃圾回收机制(Garbage collection) GC进行回收。
所以可以看出这个占用资源量较大。
例如:
String s = "abcd";
s = s+1;
这里的第一个s和第二个s。
注意:String str = “This is only a” + “ simple” + “test”;
在这个到时候速度是非常快到,但是这个str本来就是“This is only a simple test”,所以它是比较快到,
但是如果是
String str2 = “This is only a”;
String str3 = “ simple”;
String str4 = “ test”;
String str1 = str2 +str3 + str4;
这样的话就没有那么快了。
2.而StringBuffer和StringBuilder,在使用到时候就不会像String那样再从新创建对象,
而是直接使用之前到变量,再对其进行赋值。
3.StringBuilder与 StringBuffer
StringBuilder是线程非安全
StringBuffer是线程安全
非线程安全指的是当多个线程操作同一个对象的时候可能会出现问题,而线程安全则不会有问题;
但是线程安全要使用到synchronized(线程同步机制)来控制线程的同步,因而线程安全相应的性能相对低下;
当不是多个线程访问同一个对象的时候使用非线程安全的实现类是没有问题的。
使用时机来说,只要是不是多个线程访问同一个对象的情况二者都可以使用
4. 对于三者使用的总结: 1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer