一般来说,String适用于少量的字符串操作的情况,StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况,StringBuffer适用多线程下在字符缓冲区进行大量操作的情况,当然了,StringBuffer的执行速度并不比StringBuild慢多少,而且还保证了线程安全,所以还是比较常用。
StringBuilder和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。 总结: String、StringBuilder和StringBuffer的底层数据结构都是char[]数组,不同的是String将该char数组设置成了不可变的(final),通过这个关键字实现了不可变对象。 二、执行效率 三者在执行速度方面的比较:StringBuild...
区别在于:StringBuffer是线程安全的类。StringBuild不是线程安全的类,在单线程中性能要比StringBuffrer高。 例如:《Think in Java》中,描述HashTable和HashMap区别一样,就是因为HashTable支持线程同步、保证线程安全而导致的性能下降。 HashTable是线程安全的,很多方法都是synchronized方法。 HashMap不是线程安全的,但在...
StringBuffer和StringBuilder类的区别也在于此,新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。 String str="You are nice."; str+="I love you so much."; 如果用StringBuffer类的话,代码如下: StringBuffer str= new StringBuffer("You are nice."); str.append("I love ...
1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。3. StringBuilder:线程非安全的 StringBuffer:线程...
String 和StringBuffer StringBuild 的区别:,String是不可变的,因为String的内存分配方式跟数组的一样,都是静态分配的。例如:一个Strings="abc";s=s+1;在这里试图去改变s的值,但是实际上s=s+1;是开辟了例外一个内存。s的值还是没变。String里面的方法是异步
String是不可改变,定长;StringBuffer是不定长,可改变,通过分配更大的内存实现,StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步。StringBuilder是单个线程使用的StringBuffer等价类,一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API...
那么另外StringBuffer 和 StringBuilder的区别 在源码中体现在StringBuffer的方法用Synchronized(同步),来修饰,而所有的StringBuilder没有,除此之外没有其他区别了。所以说StringBuffer是线程安全的,但是StringBuilder由于没有Synchronized锁的限制所以速度更快。 有没有同学问String是线程安全的吗。。呵呵这个问题网上都搜不到...
1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。3. StringBuilder:线程非安全的 StringBuffer:线程...