String跟其他两个类的区别是
String是final类型,每次声明的都是不可变得对象
所以每次操作都会产生新的String对象,然后将指针指向新的String对象
StringBuffer,StringBuilder都是在原有对象上进行操作,
所以需要经常改变字符串内容,则建议采用这两者。
StringBuffer,StringBuilder
前者是线程安全的,后者是线程不安全的
线程不安全性能更高,所以在开发中,优先采用StringBuilder,
StringBuilder > StringBuffer > String
在开发中,一般用StringBuilder来解决字符串拼接的问题而写到方法里
StringBuilder sb = new StringBuilder();
sb.append("");
当调用的时候意味着每一个线程会独享每一个StringBuilder,从而不会产生线程安全的问题
不要产生这样的思想:
不考虑安全的情况,选用StringBuilder
不考虑性能的情况,选用StringBuffer
什么时候会考虑线程安全问题?
多线程访问同一个资源的时候才需要,单线程不需要考虑