String
String是final类,是无法被重写和修改的,所有的方法返回的是一个新的String,所有方法并没导致对其对象的修改,所以缓冲区长度不会发生变化。这样,对于经常修改的字符串,每次都返回一个新的对象,生成新对象是十分耗时的事情,自然导致对 String对象的修改性能下降不少。
StringBuffer
StringBuffer是不定长,可改变,通过分配更大的内存实现,StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步。
StringBuilder
StringBuilder是单个线程使用的StringBuffer等价类,一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
String是final类,是无法被重写和修改的,所有的方法返回的是一个新的String,所有方法并没导致对其对象的修改,所以缓冲区长度不会发生变化。这样,对于经常修改的字符串,每次都返回一个新的对象,生成新对象是十分耗时的事情,自然导致对 String对象的修改性能下降不少。
StringBuffer
StringBuffer是不定长,可改变,通过分配更大的内存实现,StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步。
StringBuilder
StringBuilder是单个线程使用的StringBuffer等价类,一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。