Java提供了String、StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法。它们的相同点是都用来封装字符串;都实现了CharSequence接口。
charSequence是一个接口,表示char值的一个可读序列。此接口对许多不同种类的char序列提供统一的自读访问。
它提供了以下方法:
int length();//返回字符串的长度
char charAt(int index); //返回index位置处下标的字节
CharSequence subSequence(int start, int end); //截取字符串
String类是一个不可变类,即创建String对象后,该对象中的字符串是不可改变的,直到这个对象被销毁。StringBuffer与StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,是可变类。StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
当创建String对象时,可以利用构造方法String str = new String(“Java”)的方式来对其进行初始化,也可以直接用赋值的方式String s = "Java"来初始化。而StringBuffer只能使用构造方法StringBuffer sb = new StringBuffer(“hello”)的方式初始化。
public class Hello {
public static void main(String[] args) {
//String的两种初始化
String num1="hello";
String num2=new String("java");
String res1=num1+"!";
String res2=num2+"!";
System.out.println(res1);
System.out.println(res2);
//StringBuffer初始化以及操作
StringBuilder sb=new StringBuilder(10);
System.out.println(sb);
sb.append("hello");
System.out.println(sb);
sb.append("java");
System.out.println(sb);
sb.insert(5,",");
System.out.println(sb);
//用StringBuffer修改String字符串
String ary="food";
StringBuffer change=new StringBuffer(ary);
change.append("!");
ary=change.toString();//返回该对象的字符串表示
System.out.println(change);
System.out.println(ary);
}
}
输出结果:
总结:
String对象是一旦写入就不会修改的,StringBuffer对象是可以修改的,所以如果要修改字符串可以创建StringBuffer对象,但是也可以创建String对象后通过StringBuffer修改,比较麻烦。
根据以上代码可以知道,通过StringBuffer创建对象**StringBuilder sb=new StringBuilder(10)**是先分配数组空间,然后通过append方法添加字符串。其实也可以初始化时直接添加字符,比如StringBuffer test=new StringBuffer(“sb”)