java基础

ahnuzfm 2019-12-03

浅谈对String,StringBuilder,StringBuffer的认识

String类是final修饰的类,final修饰的类不能够被继承。String类是字符串类,常常被用来进行字符串的操作,但是String的值是不可变的,这就导致每次对String的操作都会产生新的对象,效率低下,而且浪费了大量的内存空间。

由于对字符串的操作产生了大量的对象,浪费空间,为了解决这种状况StringBuilder应运而生,StringBuilder是可变字符串,能够解决字符串操作浪费空间的问题,并且不产生新的对象。但是StringBuilder线程不安全。

为了解决线程安全的问题StringBuffer应运而生,StringBuffer之所有线程安全是因为StringBuffer几乎所有的方法都加入了Synchronized,但是正是因为加入了Synchronized同步锁,使得速度速度变慢,而StringBuilder没有同步锁,所以它的访问速度要比StringBuffer快。

String:使用与少量字符串操作的情况,大量的操作浪费空间,效率低下。

StringBuilder:使用与单线程下在字符缓冲进行大量的操作的情况,它是线程不安全的。

StringBuffer:使用多线程下在字符缓冲区进行大量的操作的情况,它是线程安全的

相关推荐