由于String的内容一旦声明则不可改变,如果要改变,那么改变的是String的引用地址而不是string中的内容,一个字符串要经常改变,则必须使用StringBuffer类。StringBuffer中只能用append方法进行字符串的连接,而不能使用String类中的“+”字符。如下
![](https://img.haomeiwen.com/i12349897/631fe3ee098a3aa1.png)
实例操作一:字符串的连接操作
append()方法返回一个StringBuffer类的实例,因此可以采用代码链的形式一直调用append()方法,代码如下
StringBuffer buffer = new StringBuffer();
buffer.append("hello");
buffer.append("World").append("!!!!");
buffer.append("\n");
buffer.append("数字 = ").append(1).append("\n");
buffer.append("字符 = ").append('C').append("\n");
buffer.append("布尔 = ").append(true);
System.out.println(buffer);
以上代码中的“buffer.append("数字 = ").append(1).append("\n")”实际上 就是一种代码链的操作形式。
范例:验证StringBuffer的内容是可以修改的
public class StringBufferDemo02 {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer();
buffer.append("Hello");
fun(buffer);
System.out.println(buffer);
}
public static void fun(StringBuffer s) {
s.append("hahahaha").append("mmm");
}
}
程序运行结果:Hellohahahahammm
从程序的运行结果可以发现,将StringBuffer对象的内容传递到了fun()方法后,对StringBuffer的内容进行修改,而且修改完毕后修改的内容也被保留了下来。
StringBuffer类的应用
在学习String类时,曾有以下的代码:
String str1 = "MiaoXiaoLei";
for(int i = 0; i < 100; i++){
str1+=i;
}
在上面的代码中虽然最后字符串的结果改变了,但实际上是通过不断修改对象的引用来实现的,性能很差,此类问题的解决就西部依靠StringBuffer,因为StringBuffer的内容是可以修改的。代码修改如下。
范例:使用StringBuffer完成要求
public class StringBufferDemo10 {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer();
buffer.append("miaoxiaolei");
for (int i = 0; i < 100; i++) {
buffer.append(i);
}
System.out.println(buffer);
}
}
以上程序与第一个程序是一样的,但是由于使用了StringBuffer,所以代码的性能有了很大的提高,也就是说对于频繁修改字符串内容的地方,最好使用StringBuffer类完成。
网友评论