其实论坛里边回答这个问题的帖子太多了。
用白话来说吧
String 类是用来给字符串常量起名字的 比如,String s = "abcd"这样这个“abcd”就有了一个名字,但是,"abcd"这个常量是不可以再改变了,而s呢只是个名字, 指向的是个地址,所以s的指向是可以改变的,比如
s = s + “b”;这样s的指向就变了,不再指向“abcd”这个字符串了,而是指向“abcdb”这个串了
而StringBuffer只是一个类似工具类的东西,相当于io流里边的缓冲,是字符串缓冲区,既然是缓冲区,长度自然可以改变,还有好多方法,貌似是提高效率的,线程安全,就是说有锁,当然每次访问的时候都要问锁,效率相对低点
而StringBuilder是后来用来代替StringBuffer的一个类,线程不安全,但是效率高。因为学过了锁的知识以后,你自己可以做到线程安全了,就不需要用StringBuffer这个线程安全的效率相对低的工具了,建议使用StringBuilder,效率高
StringBuiler和StringBuffer的功能是一样的,都有赠删改的方法。 |