- <--个人成长笔记系列-->知识点解析之synchronized
- java中String,StringBuffer,StringB
- java中String、StringBuffer、StringB
- java中String、StringBuffer、StringB
- Java中String、StringBuffer、StringB
- Java中String、StringBuffer、StringB
- java中String、StringBuffer、StringB
- Java中String、StringBuffer、StringB
- Java 基础知识(一)
- java String,StringBuffer,StringB
运行速度:StringBulider>StringBuffer>String
String运行速度最慢的原因:
String为字符串常量,而StringBuilder,StringBuffer均为字符串变量,String对象一旦创建该对象是不可以更改的,以代码为例子:
String str="abc";
System.out.println(str);
str=str+"de";
System.out.println(str);
这段代码先输出abc,然后又会输出abcde,好像是str改变了,但事实上是jvm新创建了一个类型为str的对象把原来的str加在现在的str上面,所以说原来的str实际上是没有更改的,最后不被使用会被jvm的垃圾回收机制(GC)回收。
线程安全
StringBuilder是线程不安全的,StringBuffer是线程安全的
如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中含有很多带有synchronize关键字的方法,可以保证线程安全,但是StringBuilder对象就不含有这种方法,不能保证线程安全,有可能会出现一些错误,如果要执行的操作是多线程的,就需要使用StringBuffer,在单线程的情况下,建议使用速度快的StringBuilder
总结
String:使用于少量的字符串操作的情况
StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
网友评论