版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36570478/article/details/81183680
String
String是不可修改对象(一旦创建便无法修改,String引用可以指向新的String对象,但不会改变原来的String对象),已经创建的String对象存储在String常量池当中。
在Java中不可修改的对象都是线程安全的,所以String对象也是线程安全的。String对像不能同时被两个线程访问。
String一旦创建,无法修改。
StringBuffer
StringBuffer是可修改对象,对象在被创建后可直接对对象进行修改。通过StringBuffer创建的对象存储在堆中。StringBuffer和StringBuilder具有相同的方法,但是StringBuffer的所有方法都市同步的,所以StringBuffer是线程安全的。
因此两个线程可以通过同一个方法访问同一个StringBuffer对象,一个时间段内只有一个线程的方法可以访问。
为保证线程安全StringBuffer牺牲了访问速度,调用相同的方法时使用StringBuilder更快。
StringBuilder
StringBuilder和StringBuffer一样存储在堆当中,同样是一个可修改对象。与StringBuffer最大的不同是它不具有线程安全性,因此访问速度要更快。