您的位置:首页 > 产品设计 > UI/UE

java学习之路 之 Java常用类-StringBuffer类、StringBuilder类 及 练习题

2016-08-20 10:44 399 查看
import org.junit.Test;

StringBuffer类:

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。

很多方法与String相同,但StingBuffer是可变长度的。

StringBuffer是一个容器。

StringBuffer类有三个构造方法:
1.StringBuffer()初始容量为16的字符串缓冲区
2.StringBuffer(int size)构造指定容量的字符串缓冲区
3.StringBuffer(String str)将内容初始化为指定字符串内容 

StringBuffer类的常用方法:
StringBuffer append(String s),   
StringBuffer append(int n) ,  
StringBuffer append(Object o) ,  
StringBuffer append(char n),
StringBuffer append(long n),  
StringBuffer append(boolean n),
StringBuffer insert(int index, String str) 
public StringBuffer reverse() 
StringBuffer delete(int startIndex, int endIndex) 
public char charAt(int n )
public void setCharAt(int n ,char ch)
StringBuffer replace( int startIndex ,int endIndex, String str) 
public int indexOf(String str)
public String substring(int start,int end)
public int length()

StringBuilder类:
StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样
String:不可变字符序列
StringBuffer:可变字符序列、效率低、线程安全
StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

String使用陷阱: string s="a"; 
//创建了一个字符串 s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致

大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

练习题:

/**
* StringBuffer :
* 是内容可以改变的Unicode字符序列
* append(...) 追加内容到末尾
* insert(int index, ...); 在指定位置处插入新内容
* delete(int begin, int end); 删除子串
* setCharAt(int index, char newCh); 替换指定位置处的字符为newCh
*
*/
public class StringBufferTest {

@Test
public void test2() {
String text = "";
long startTime = 0L;
long endTime = 0L;
StringBuffer buffer = new StringBuffer("");
StringBuilder builder = new StringBuilder("");
startTime = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
buffer.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer的执行时间:" + (endTime - startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
builder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder的执行时间:" + (endTime - startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
text = text + i;
}
endTime = System.currentTimeMillis();
System.out.println("String的执行时间:" + (endTime - startTime));
// 声明3个字符串, 以第1个为参数创建StringBuilder,把第二个串追加在后面,把第三个插入到最前面, 打印输出
}

@Test
public void test1() {
StringBuffer sBuffer = new StringBuffer("原始字符串");
sBuffer.append(100).append(false).append(3.14).append("新串");
sBuffer.append(new Person());
System.out.println(sBuffer);

sBuffer.insert(2, "部落");
sBuffer.insert(2, 100.23f);

System.out.println(sBuffer);

sBuffer.delete(2, 7); // 删除字符串指定部分

System.out.println(sBuffer);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: