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("____________________");
}
}效果: