老师上课时已经详细地讲解了String类的各种概念,其中有一条特性是String的内容一旦声明则不可改变,如果改变,则改变的肯定是String的引用地址,那么如果现在的情况是一个字符串要被经常改变,此时就必须使用StringBuffer类。从老师的讲课中大家已经清楚地知道,在String类中可以通过“+”进行字符串的连接,但在StringBuffer中却只能使用append()方法进行字符串的连接。下面我就个人理解给大家展示一下StringBuffer类中的一些方法。
1、字符串的连接操作
在程序中使用append()方法可以进行字符串的连接,而且此方法返回了一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append()方法,代码如下所示:
通过append()方法连接各种类型的数据
public class StringBufferDemo1{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("Hello"); // 向StringBuffer中添加内容
buf.append("World").append("!!!"); // 可以连续调用append()方法
buf.append("\n"); // 添加一个转义字符表示换行
buf.append("数字=").append(1).append("\n"); // 可以添加数字
buf.append("字符=").append('c').append("\n"); // 可以添加字符
System.out.println(buf); //内容输出
}
}
在这里我就不说运行结果了,有兴趣可以自己运行一下,看看结果是什么。除了上面外StringBuffer的内容是可以修改的、在这就不详说了。
2、在任意位置处为StringBuffer添加内容
可以直接使用insert()方法在指定的位置为StringBuffer添加内容,代码如下:
public class StringBufferDemo2{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("World!!"); // 向StringBuffer中添加内容
buf.insert( 0 , "Hello"); // 在所有内容之前添加
System.out.println(buf); //将修改后的内容输出
buf.insert(buf.length() , “潘天功"); // 在最后添加
System.out.println(buf); //将内容输出
}
}
3、字符串反转操作
在StringBuffer中专门提供了字符串反转的操作方法,所谓的字符串反转就是指将一个是“Hello”的字符串转为“olleH”.代码如下:
public class StringBufferDemo3{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("World!!"); // 向StringBuffer中添加内容
buf.insert( 0 , "Hello"); // 在所有内容之前添加
String str = buf.reverse().toString(); // 将内容反转后变为String类型
System.out.println(str); // 将内容输出
}
}
以上的程序通过append()和insert()方法向Stringbuffer加入数据后,使用reverse()方法将所有的内容以逆序的方式输出。在字符串的操作中,反转是一种较为常见的操作。
4、替换指定范围的内容
在Stringbuffer类中也存在replace()方法,使用此方法可以对指定的内容进行替换,代码体现如下:
public class StringBufferDemo4{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
buf.replace(6,11,"潘天功"); // 将World替换为潘天功
System.out.println(buf); //删除替换后的内容
}
}
注意:在String中如果要进行替换,则使用的是replaceAll()的方法,而在Stringbuffer中使用的是replace()方法。
5、字符串截取
通过substring()方法可以直接从Stringbuffer的指定范围中截取内容,具体代码如下:
public class StringBufferDemo5{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
buf.replace(6,11,"潘天功"); // 将World替换为潘天功
String str = buf.substring(6 , 11); // 指定截取范围,并把内容转化为String类型
System.out.println(str); //将截取后的结果输出
}
}
6、删除指定范围的字符串
因为StringBuffer本身的内容是可更改的、所以也可以通过delete()方法删除指定范围的内容
public class StringBufferDemo6{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
buf.replace(6,11,"潘天功"); // 将World替换为潘天功
String str = buf.delete(6 , 11).toString(); // 删除指定范围的字符串
System.out.println(str); //将删除之后的结果输出
}
}
7、查找指定的内容是否存在
通过indexOf()方法可以查找指定内容,如果查找到了,则返回内容的位置,如果没有查找到则返回-1
public class StringBufferDemo7{
public static void main(String[] args){
StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
if(buf.indexOf("Hello").append = = -1){
System.out.println("没有查找到指定的内容");
}else{
System.out.println("可以查找到指定的内容");
}
}
}
总结:当时老师讲课时就说这个类很重要、由于当时课程比较紧、所以没有很好地理解这个类。现在重新整理下,感觉轻松多了。
|