美文网首页
java中String,StringBuffer,StringB

java中String,StringBuffer,StringB

作者: eliteTyc | 来源:发表于2018-10-10 15:47 被阅读0次

运行速度: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:适用于单线程下在字符缓冲区进行大量操作的情况

原文地址:https://www.cnblogs.com/su-feng/p/6659064.html

相关文章

网友评论

      本文标题:java中String,StringBuffer,StringB

      本文链接:https://www.haomeiwen.com/subject/ijsjqftx.html