String:
最直观 的区别就是String 是不可变字符串,一旦只要确定或者储存了,就改变不了,因为String其实里边也是用字符数组来存储的,其底层是用final修饰的类,只要确定就改变不了了, 类似与对字符串的拼接或者存储都是产生一个新的字符串,
StringBuilder:
首先它是可变字符串,它继承AbstractStringBuider类,也是字符串数组但是它没有用Final修饰,对字符串的拼接或者截取都是在原有的字符串上进行修改,这也大大的减少了占用内存
StringBuffer:
StringBuffer其实和StringBuilder差不多都是继承自AbstractStringBuider类,都是在原有字符串上进行修改,不会产生新的字符串
区别:运行速度和线程安全性
1 运行速度 StringBuilder>StringBuffre>String
2 线程安全 StringBuffer,String>StringBuilder
String之所以最慢是是因为它每次改变时都产生一个新的字符串,都要重新值向新的字符串,而其他两StringBuilder比StringBuffer比块是因为StringBuffer每个方法几乎都加了synchronized同步的关键字这也就带来弊端就是运行速度慢,也同时带来好处就是更加的安全