String 与StringBuffer的区别
String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独
字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可
以把字符串设为共享的。
StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用
StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得
多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大
的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使
String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独
字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可
以把字符串设为共享的。
StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用
StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得
多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大
的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使
用StringBuffer类就避免了这个问题.
public class Test {
public static void stringReplace(String text) {
//把textString的地址copy给text,text也指向了textString的"java"
//text.replace('j', 'i');的结果是"iava"
//text = text.replace('j', 'i');就是重新使text指向"iava"
//由于该方法的返回类型是void,所以原来的textString没变
text = text.replace('j', 'i');
}
public static void bufferReplace(StringBuffer text) {
//textBuffer的地址copy给text
//然后沿着text指向的字符串(其实也就是textBuffer指向的对象)操作,添加一个"C"
//虽然没有任何返回,但是这个操作影响到了textBuffer所指向的字符串
//所以上个方法打印"java",这个方法打印"javaC"
text = text.append("C");
}
public static void main(String args[]) {
String textString = new String("java");
StringBuffer textBuffer = new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString + textBuffer);
}
}
打印结果:javajavaC
从数据库中取200条数据,进行格式化,玩家名称&玩家等级&玩家金钱&玩家名次&玩家称号#...
使用String "+",和使用StringBuffer.append()的区别是很大的