Java高级特性-String、StringBuffer、StringBuilder
String
Java语言中的字符串值属于String类,虽然有其它方法表示字符串(如字符数组),但Java一般使用String类作为字符串的标准格式,Java编译器把字符串值作为Strin对象。
String对象一旦创建就不能改变。如果需要进行大量的字符串修改操作,应该使用StringBuffer/StringBuilder类或者字符数组,最终结果可以被转换成String对象。
StringBuffer
线程安全的可变字符序列。
一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。
如果内部缓冲区溢出,则此容量自动增大。
StringBuilder
从JDK 5开始,为StringBuffer类补充了一个单个线程使用的等价类,即StringBuilder.
与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();
demo:
public class StringBuilderDemo { public static void main(String[]args) { //可指定容量或指定字符串,不指定时,默认为16个字符 StringBuilder sb=new StringBuilder(); sb.append("hello"); sb.append(" "); sb.append(32); System.out.println("长度:"+ sb.length());//长度 System.out.println("容量:"+sb.capacity());//容量 System.out.println(sb.toString());//字符串内容 sb.insert(5," world ");//插入 System.out.println(sb.toString());//字符串内容 sb.replace(5,6,"++");//把下标5~6[不包含]之间替换成指定字符串 System.out.println(sb.toString());//字符串内容 System.out.println("world下标:"+sb.indexOf("world")); sb.reverse();//字符串反转 System.out.println("反转:"+sb.toString()); //字符数组与字符串的操作 String str = "abc f"; char[] array = new char[10]; str.getChars(0,str.length(),array,0);//把字符串填充到字符数组中 String str2 = new String(array,0,str.length());//字符数组转换为字符串 System.out.println(str2); System.out.println("____________________"); } }
效果: