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

Java学习之StringBuffer和StringBuilder

2017-04-05 20:15 246 查看
StringBuffer和StringBuilder

一、StringBuffer:

线程安全的可变字符序列。 

String和StringBuffer的区别?

 A:String的内容不可变

B:StringBuffer的内容可变

StringBuffer和StringBuilder的区别?

  A:StringBuffer 线程安全,效率低

B:StringBuilder 线程不安全,效率高

 线程安全:(同步),效率低

 线程不安全:(不同步),效率高

 二、构造方法:

StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。

StringBuffer(int capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为 capacity个字符。

StringBuffer(String str):构造一个其中带字符的字符串缓冲区,其初始容量为??? 个字符。

 三、成员方法:

public int length():返回长度(字符数)。实际值

public int capacity():返回当前容量。 理论值 

添加功能:添加元素,并返回本身的对象。

public StringBuffer append(String str):追加数据,在末尾添加

public StringBuffer insert(int offset,String str):插入数据,在指定位置添加

 删除功能:

public StringBuffer deleteCharAt(int index):删除指定索引处的字符

public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右

 替换功能:

public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据

 反转功能:

public StringBuffer reverse()

 截取功能:返回值类型是String类型,本身没有发生改变

public String substring(int start)

public String substring(int start,int end) 

 相互转换:

String --
StringBuffer

String s = "hello";

// 方式1

StringBuffer sb1 = new StringBuffer(s);

// 方式2

StringBuffer sb2 = new StringBuffer();

sb2.append(s);

 StringBuffer  --  String

StringBuffer sb = new StringBuffer("world");

//方式1

String s1 = sb.substring(0);

//方式2

String s2 = sb.toString();

//方式3

String s3 = new String(sb);

package com.edu_stringbuffer;
/**
* StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
* StringBuffer(int capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为 capacity个字符。
* StringBuffer(String str):构造一个其中带字符的字符串缓冲区,其初始容量为??? 个字符。
*
* 成员方法:
* public int length():返回长度(字符数)。实际值
* public int capacity():返回当前容量。 理论值
* 添加功能:添加元素,并返回本身的对象。
* A:public StringBuffer append(String str):追加数据,在末尾添加
* B:public StringBuffer insert(int offset,String str):插入数据,在指定位置添加
* 删除功能:
* public StringBuffer deleteCharAt(int index):删除指定索引处的字符
* public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右
* 替换功能:
* public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据
*
* 反转功能:
* public StringBuffer reverse()
* 截取功能:返回值类型是String类型,本身没有发生改变
* public String substring(int start)
* public String substring(int start,int end)
*
*/
public class Demo {
public static void main(String[] args) {
/* StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(int capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为 capacity个字符。
StringBuffer(String str):构造一个其中带字符的字符串缓冲区,其初始容量为??? 个字符。*/
StringBuffer sbBuffer = new StringBuffer();
StringBuffer buffer = new StringBuffer("hello");
System.out.println(buffer.length());//5
System.out.println(sbBuffer.length());//0
System.err.println(sbBuffer.capacity());//16

/*添加功能:添加元素,并返回本身的对象。
A:public StringBuffer append(String str):追加数据,在末尾添加
B:public StringBuffer insert(int offset,String str):插入数据,在指定位置添加 */
StringBuffer buffer2 = new StringBuffer("hello");
System.out.println(buffer2.append("word"));//helloword
System.out.println(buffer2.insert(2, "lili"));//helililloword

/*删除功能:
public StringBuffer deleteCharAt(int index):删除指定索引处的字符
public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右*/
StringBuffer buffer3 = new StringBuffer("hello1");
System.out.println(buffer3.deleteCharAt(3));//helo1
System.out.println(buffer3.delete(2,4));//he1

/*替换功能:
public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据*/
StringBuffer buffer4 = new StringBuffer("hello");
System.out.println(buffer4.replace(1, 3, "jiang"));//hjianglo

/* 反转功能:
public StringBuffer reverse()*/
StringBuffer buffer5 = new StringBuffer("hello");
System.out.println(buffer5.reverse());//olleh

/* 截取功能:返回值类型是String类型,本身没有发生改变
public String substring(int start)
public String substring(int start,int end)*/
StringBuffer buffer6 = new StringBuffer("hello");
System.out.println(buffer6.substring(2));//llo
System.out.println(buffer6.substring(0, 3));//hel
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐