Java里面有3个类是关于字符操作的,分别是Character、String、StringBuffer,Character只能操作单个字符,String可以对字符串操作,但是这个类不可变,StringBuffer是可变类,也可以操作字符串。这里主要讲StringBuffer类和String的区别。
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。
在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。
两者有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。
接下来看下面运行结果是怎样的。
java_StringBuffer.java
public class java_StringBuffer {
public static void main(String[] args) {
structureStr();
SearchStr();
LengthStr();
AppendStr();
AddAppendStr();
DeleteStr();
InsertStr();
GetCharAtStr();
ReplaceStr();
ReverseStr() ;
SubStr();
}
/*构造方法 */
public static void structureStr(){
System.out.print("structureStr()\n");
StringBuffer s0=new StringBuffer();//分配了长16字节的字符缓冲区
StringBuffer s1=new StringBuffer(512);//分配了512字节的字符缓冲区
StringBuffer s2=new StringBuffer("nothing or the best!");//
s0.append("I love shenzhen!");
System.out.print("s0=" + s0.toString()+"\n"+"s1=" + s1.toString()+"\n"+"s2=" + s2.toString()+"\n");
}
/* indexOf lastIndexOf方法查找匹配字符串 */
public static void SearchStr() {
System.out.print("SearchStr()\n");
StringBuffer sb = new StringBuffer();
sb.append("Never regret.If it's good,it's wonderful.If it's bad,it's experience.");
// sb.indexOf("it")返回子it在字符串中最先出现的位置,不存在的话就返回负数。
System.out.println("sb.indexOf(\"it\")=" + sb.indexOf("it"));
// 给indexOf方法设置参数,指定匹配的起始位置
System.out.println("sb.indexOf(\"it\")(3)=" + sb.indexOf("it", 3));
System.out.println("sb.indexOf(\"it\")(55)=" + sb.indexOf("it", 55));
// lastIndexOf方法返回子字符串在字符串中最后出现的位置,不存在的话就返回负数。
System.out.println("sb.lastIndexOf(\"it\") = " + sb.lastIndexOf("it"));
// 给lastIndexOf方法设置参数,指定匹配的结束位置
System.out.println("sb.lastIndexOf(\"good\", 1)(2) = "
+ sb.lastIndexOf("good", 2));
System.out.println("sb.lastIndexOf(\"good\", 1)(50) = "
+ sb.lastIndexOf("good", 50));
}
/* length方法获取字符串的长度 */
public static void LengthStr(){
System.out.print("\nLengthStr()\n");
StringBuffer sb = new StringBuffer("I love java!");
System.out.print("sb=" + sb.toString()+"\nthe length of string is "+sb.length());
}
/* append方法在字符串末尾添加内容 */
public static void AppendStr() {
System.out.print("\nAppendStr()\n");
StringBuffer sb = new StringBuffer();
sb.append("This is a test function for append\n");
sb.append("to be stronger man\n ");
System.out.print(sb.toString());
}
/* charAt方法获取字符串中某个位置的字符 */
public static void GetCharAtStr() {
System.out.print("\nGetCharAtStr()\n");
StringBuffer sb = new StringBuffer("I am only brave when i have to be. Being brave don't mean you go looking for trouble");
System.out.println(sb.charAt(sb.length() - 1));
}
/* append方法添加各种类型的数据到字符串的尾部 */
public static void AddAppendStr() {
System.out.print("\nAddAppendStr()\n");
StringBuffer sb = new StringBuffer("I love java!");
sb.append(15.20f);
sb.append(39.28f);
sb.append(369);
System.out.println(sb.toString());
}
/*delete方法删除字符串中的数据 */
public static void DeleteStr() {
System.out.print("\nDeleteStr()\n");
StringBuffer sb = new StringBuffer("Don't lie to people who trust you!");
sb.delete(1, 4);
sb.deleteCharAt(sb.length() - 1);
System.out.println(sb.toString());
}
/*insert方法向字符串中插入各种类型的数据 */
public static void InsertStr() {
System.out.print("\nInsertStr()\n");
StringBuffer sb = new StringBuffer("Knowledge will give you power,but character respect!");
sb.insert(1, 'T');
System.out.println(sb.toString()+"\n");
sb.insert(5, new char[] { 'D', 'F', 'G' });
System.out.println(sb.toString()+"\n");
sb.insert(7, "THY");
System.out.println(sb.toString()+"\n");
sb.insert(9, 3);
System.out.println(sb.toString()+"\n");
sb.insert(2, 2.9f);
System.out.println(sb.toString()+"\n");
sb.insert(7, 3.63d);
System.out.println(sb.toString()+"\n");
sb.insert(9, 5892L);
System.out.println(sb.toString()+"\n");
sb.insert(10, true);
System.out.println(sb.toString()+"\n");
sb.insert(15, false);
System.out.println(sb.toString()+"\n");
}
/*replace方法替换字符串中的某些字符 */
public static void ReplaceStr() {
System.out.print("\nReplaceStr()\n");
StringBuffer sb = new StringBuffer("Don't worry too much about the ambiguous future!");
sb.replace(5, sb.length()-1, "replace_str");
System.out.println(sb.toString());
}
/* reverse方法将字符串倒序*/
public static void ReverseStr() {
System.out.print("\nReverseStr()\n");
StringBuffer sb = new StringBuffer("We must accept finite disappointment,but we must never lose infinite hope!\n");
System.out.println(sb.toString());
System.out.println(sb.reverse());
}
/*
substring(int start)方法返回从start下标开始以后的字符串
substring(int start,int end) 方法返回从start到 end-1字符串
*/
public static void SubStr() {
System.out.print("\nSubStr()\n");
StringBuffer sb = new StringBuffer("It doesn't matter if the guy is perfect!\n");
System.out.println(sb.substring(6,10));
System.out.println(sb.substring(6));
System.out.println(sb.toString());
}
}