1.String:java中字符串值属于String类,java编译器把字符串值作为String对象;但String对象一旦创建就不能改变,如果需要进行大量的字符串操作,应该使用StringBuffer/StringBuilder类或者字符数组,最终可以被转换成String对象。
2.StringBuffer:线程安全的可变字符序列;一个类似于String字符串缓冲区,通过某些方法调用可以改变字符串的长度和内容;每个字符串都有缓冲区,只要字符串缓冲取包含的字符序列没有超出此容量。就无序分配新的内部缓冲区数组;如果缓冲区溢出,则此容量自动增大。缺点:操作速度比较慢。
常用方法代码:
//弱点:线程是安全的,但底层操作速度比较慢
StringBuffer buffer = new StringBuffer("abcde");
System.out.println(buffer);
//拼接
buffer.append("+edbca");
System.out.println(buffer);
//截取字符串
System.out.println(buffer.substring(1, 4));
//取索引位置字符
System.out.println(buffer.charAt(1));
3.StringBuilder:JDK5以后,为StringBuffer补充了一个单个线程使用的等价类,即,StringBuilder,通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,所以速度快。
常用方法代码:
//StringBuilder对象
StringBuilder builder = new StringBuilder("aaaaa");
//拼接字符串
System.out.println(builder.append("+bbbbb"));
//截取字符串
System.out.println(builder.substring(4,8));
//取字符索引位置字符
System.out.println(builder.charAt(8));
//字符串长度
System.out.println(builder.length());
//返回当前容量
System.out.println(builder.capacity());
//移除指定范围的字符串,包头不包尾
System.out.println(builder.delete(0, 6));
//移除指定索引处的字符串
System.out.println(builder.deleteCharAt(0));
//将指定字符插入
System.out.println(builder.insert(1, "abc"));
//替换字符串
System.out.println(builder.replace(1, 4, "def"));
//转换成字符串
System.out.println(builder.toString());
//返回此字符串的指定子字符串中第一个出现的索引(indexOf/lastIndexOf)
System.out.println(builder.indexOf("e"));
具体介绍详见JDK API文档。