文
章
目
录
章
目
录
Java面试题:说一下String、StringBuffer、Stringbuilder的区别?
得分点
字符串是否可变,StringBuffer、StringBuilder线程安全问题
标准回答:
在Java中,字符串的处理可以使用两个主要类来封装:String
和 StringBuffer
。这两个类提供了一系列方法,用于操作字符串对象。
String
是一个不可变类,这意味着一旦创建了一个String
对象,其中的字符序列就不能被改变,直到该对象被销毁为止。StringBuffer
代表一个可变的字符序列字符串。一旦创建了一个StringBuffer
对象,我们可以使用StringBuffer
提供的方法,如append()
、insert()
、reverse()
、setCharAt()
、setLength()
等来改变该字符串对象的字符序列。当我们需要获取一个StringBuffer
中的字符序列的字符串表示时,可以使用toString()
方法来转换为String
对象。
此外,Java 1.5 引入了 StringBuilder
类,它也用于表示字符串对象。与 StringBuffer
类相比,它们都有一个共同的父类 AbstractStringBuilder
,并且在构造器和方法上基本相同。
唯一的区别在于,StringBuilder
不考虑线程安全问题,因此在单线程环境下操作大量数据时,性能略高于 StringBuffer
。然而,在多线程环境下操作大量数据时,应该优先选择 StringBuffer
,因为它考虑了线程安全性。