String 跟其他两个类的区别是
String是final类型,每次声明的都是不可变的对象,
所以每次操作都会产生新的String对象,然后将指针指向新的String对象。
- List item
StringBuffer,StringBuilder都是在原有对象上进行操作
所以,如果需要经常改变字符串内容,则建议采用这两者。
StringBuffer vs StringBuilder
StringBuffer 每个方法都加了synchronize修饰
前者是线程安全的,后者是线程不安全的。
线程不安全性能更高,所以在开发中,优先采用StringBuilder.
StringBuilder > StringBuffer > String
多线程访问同一个资源用StringBuffer
开发中StringBuilder解决?
字符拼接的问题:
方法内部:每个线程共享一个StringBuilder
StringBuilder sb = new StringBuilder();
StringBuilder.append(""); 在方法内写这样的代码。
String s = “java”;
String s = new String(“java”);
这两者的内存分配方式是不一样的。
第一种方式,JVM会将其分配到常量池,而第二种方式是分配到堆内存