- String
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
String s="a";//String指向a的地址
s="b";//String改为指向b的地址,但原地址的a仍存在 - StringBuffer
StringBuffer是可拼接的字符串对象,因为String对象是不可以改变的,所以如果需要创建动态拼接的字符串,使用StringBuffer效率较高。常用append来添加字符内容,最后使用toString()方法转换成String。
StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。 - StringBuffer
StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而 StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用 StringBuffer和StringBuilder类。 - 总结
- 一般情况下,速度从快到慢:StringBuilder>StringBuffer>String
- 如果要操作少量的数据用 = String
单线程操作字符串缓冲区 下操作大量数据 = StringBuilder (线程不安全)
多线程操作字符串缓冲区 下操作大量数据 = StringBuffer(线程安全)
java基础-String、StringBuffer和StringBuilder的区别
最新推荐文章于 2024-05-15 15:04:49 发布