String, StringBuilder, StringBuffer之间的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 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最大的不同是它不具有线程安全性,因此访问速度要更快。

猜你喜欢

转载自blog.csdn.net/weixin_36570478/article/details/81183680
今日推荐