java String,StringBuilder和StringBuffer

String:
1.java语言中的字符串值属于String类,虽然有其它方法表示字符串(如字符数组),但java一般使用Sting类作为字符串的标准格式,java编译器把字符串值作为String对象。
2.String对象一旦创建就不能改变。如果需要进行大量的字符串修改操作,应该使用StringButter/StringBuilder类或者字符数组,最终结果可以被转换成String对象。

StringBuffer:
1.StringBuffer 线程安全的可变字符序列
2.一个类似于String的字符串缓冲区(字符数组)通过某些方法调用可以改变该序列的长度和内容。
3.每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超过此容量就无须分配新的内部缓冲区数组。
4.如果内部缓冲区溢出,则此容量自动增大。

StringBuilder:
1.从JDK5开始,为StringBuffer类补充了一个单个线程使用的等价类,即StringBuilder。
2.与StringBuffer相比,通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但是由于它不执行同步,所以速度更快。

public int length() //返回字符串长度
public int capacity() //返回字符串数组容量长度
public StringBuffer append(String str) //添加一个字符或字符串
public StringBuffer insert(int offset,String str) //在指定位置插入一个字符串
public int indexOf(String str) //查找字符串首次出现的下标
public int indexOf(String str,int fromIndex) //从指定位置开始,查找字符串首次出现的下标
public int lastIndexOf(String str) //查找字符串最近一次出现的下标
public StringBuffer reverse() //翻转字符串
public String toString() //将字符数组缓冲区转换为字符串常量
API文档讲解

public class StringBuilderDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //StringBuilder sb = "abc";//无此种声明方式
        //StringBuilder sb = new StringBuilder();//默认16个字符大小的容量数组
        //StringBuilder sb = new StringBuilder(100);//初始化100个容量的字符串数组
        //StringBuilder sb = new StringBuilder("abc");//字符串的前三个字符是abc
        StringBuilder sb = new StringBuilder();
        sb.append("abc");
        sb.append(1);
        sb.append(1.5);
        System.out.println(sb.length());
        System.out.println(sb.capacity());
        sb.insert(3, "def");
        System.out.println(sb.toString());
        sb.replace(3, 6, "kkk");
        System.out.println(sb.toString());
        System.out.println(sb.indexOf("b"));
        System.out.println(sb.reverse());
    }

}
原文地址:https://www.cnblogs.com/liubing2018/p/8478036.html