一、StringBuffer类
1)java.lang.StringBuffer代表可变的字符序列。
2)StringBuffer是String类的增强版,可直接对字符串进行更改而不重新分配新的内存空间。
3)StringBuffer类常见构造方法:
见6)
4)StringBuffer常用方法(1)
重载方法public StringBuffer append(...)可以为该StringBuffer对象添加字符序列,返回添加后的该StringBuffer对象引用。
见6)
5)StringBuffer常用方法(2)
a、重载方法public StringBuffer insert(...)可以为该StringBuffer对象在指定位置插入字符序列,返回修改后的该StringBuffer对象引用。
b、方法public StringBuffer delete(int start, int end)可以删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用。
c、和String类含义类似的方法:indexOf()、substring()、length();
d、方法public StringBuffer reverse()用于将字符序列逆序,返回修改后的该
StringBuffer对象引用。
6)StringBuffer类举例(1)
package com.hpe.stringbuffer;
public class TestStringBuffer1 {
public static void main(String[] args) {
String s = "Microsoft";
char[] a = { 'a', 'b', 'c' };
//使用StringBuffer的构造方法造出String对象的StringBuffer副本
StringBuffer sb1 = new StringBuffer(s);
//append方法返回StringBuffer对象,可以如下连续添加字符或字符串甚至是数字等
sb1.append('/').append("IBM").append('/').append("Sun");
System.out.println(sb1);
StringBuffer sb2 = new StringBuffer("数字");
for (int i = 0; i < 10; i++) {
sb2.append(i);
}
System.out.println(sb2);
//将sb2的第sb2.length()-3到sb2.length()-1这3个
//字符截掉,并且在第0个位置插入"abc"
sb2.delete(sb2.length()-3, sb2.length()).insert(0, a);
System.out.println(sb2);
//将sb2逆序
System.out.println(sb2.reverse());
}
}
运行结果:
Microsoft/IBM/Sun
数字0123456789
abc数字0123456
6543210字数cba
总结:见代码注释
7)StringBuffer类举例(2)
StringBuffer类和String类之间equals的关系
package com.hpe.stringbuffer;
public class TestStringBuffer2 {
public static void main(String[] args) {
String str1 = "abc";
String str2 = new String("abc");
//虽然str1指向常量池,str2指向堆,但String类比较的
//是两个String对象的字符序列是否相同,所以equals
System.out.println(str1.equals(str2));//true
StringBuffer sb1 = new StringBuffer(str1);
//虽然二者字符序列一样,但是类型不同,肯定不equals
System.out.println(str1.equals(sb1));//false
//sb1返回具有相同字符序列的String对象
//不管是哪个类型返回的,只要返回的是String类型、
//字符序列相同就equals
String str3 = sb1.toString();
System.out.println(str1.equals(str3));//true
StringBuffer sb2 = new StringBuffer("abc");
StringBuffer sb3 = new StringBuffer("abc");
System.out.println(sb2.equals(sb3));//false
}
}
运行结果注释在打印语句之后。