String; StringBuilder; StringBuffer;之间的区别在哪

2023-01-06 12:11:31
String操作字符串,被String修饰的变量是定长且不可改变的,若想对被修饰的字符串修改,使用+号拼接,此时会返回一个新的对象,而不是原本的对象。 StringBuilder与StringBuffer相比于String来说,他们的优势就在于对字符串的操作更加的灵活多变了,使用他的一些方法,如append();对字符串进行增加,返回的对象是当前对象的本身,并不会返回新的对象。 而StringBuilder和StringBuffer这二者的主要区别在于线程安全问题。差别在于方法有无synchronized关键字的修饰;在StringBuffer的底层方法中使用到了synchronized锁的机制,锁住方法,保证了线程的安全;而StringBuilder中并没有采用这种机制,直接调用父类的方法;父类的非原子性操作给它带来了线程安全问题。 在多线程大数据量中使用StringBuffer;在单线程大数据量中使用StringBuilder。