文
章
目
录
章
目
录
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,因为它考虑了线程安全性。





