Java常用类及其方法(三)--->StringBuffer

来源:互联网 发布:java new object 编辑:程序博客网 时间:2024/05/01 14:34

类StringBuffer:

A: * StringBuffer:构造一个字符串缓冲区,可变字符序列,安全的
 * 线程安全?(多线程的一个范畴)
 * 线程:是依赖于进程而存在
 * 线程的安全---->同步了----->效率低
 * 举例:银行的网站,医院的网站
 * 线程不安全---->不同步----->效率高
 * 论坛之类的网站
 * 新闻之类的网站

B:面试题
 
1、 注意StringBuffer和String的区别?
 * 共同点:都是在内存中以字符串的形式返回的
 * 区别:
   1)String它是一个不可变的字符序列,一旦被赋值,其值不能被改变
 * 2)StringBuffer;构造一个字符串缓冲池,可变字符序列,线程安全,效率低
 * 3)StringBuilder:可变的字符序列,将StringBuffer兼容,线程不安全的,效率高,一般用来替代StringBuffer(单个线程中)


 2、StringBuffer和数组有什么区别?

   相同点:都可以看做是一个容器
   不同点:
      StringBuffer:最终得到的数据还是字符串类型
      数组可以存储多种类型的元素,必须保证元素的类型是一致的
C:String和StringBuffer都可以作为形式参数传递
     注意:String类型它是一种特殊的引用类型 ,作为形式参数传递,和基本数据类型的效果是一样的
 


D: StringBuffer的常用方法
 1、 StringBuffer的构造方法:
 * public StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符
 * public StringBuffer(int capacity)
 * public StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
 * 该字符的初始容量16加上字符串参数的长度
 * 特有的方法:
 * public int capacity()返回当前容量
 * public int length():获取字符串缓冲区的长度

代码:
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
System.out.println("sb:"+sb);
System.out.println("length:"+sb.length());
System.out.println("capacity:"+sb.capacity());
System.out.println("------------");
//public StringBuffer(int capacity)
StringBuffer sb2=new StringBuffer(50);
System.out.println("length:"+sb2.length());
System.out.println("capacity:"+sb2.capacity());
System.out.println("------------");
//public StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
//该字符的初始容量16加上字符串参数的长度
StringBuffer sb3=new StringBuffer("hello");
System.out.println("length:"+sb3.length());
System.out.println("capacity:"+sb3.capacity());
System.out.println("------------");
}
}
2.  StringBuffer的添加功能:
      public  StringBuffer append(String str):追加 ,可以添加任何数据类型、
 public StringBuffer insert(int offset,String str)在指定位置插入Str这个字符串,返回缓冲区本身
3.  StringBuffer的删除功能:
     public StringBuffer deleteCharAt(int index)删除指定索引处的字符,返回的是字符缓冲区本身
public StringBuffer delete(int start,int end):删除从指定位置开始到指定位置结束,包前不包后,
       返回字符串缓冲区本身
4.   StringBuffer的替换功能
     public StringBuffer replace(int start,int end,String str)从指定位置开始到指定位置结束进行替换,替换的内容为新的字符串,返回字符串缓冲区本身
5.   StringBuffer的反转功能
     public StringBuffer reverse()是StringBuffer的特有功能,返回的还是字符串缓冲区本身
6.   StringBuffer得到截取功能
     public String substring(int start)
public String substring(int start,int end)返回的是字符串类型(String),而不是字符串缓冲区本身

代码:
public class StringBufferDemo2 {
public static void main(String[] args) {
//创建字符串缓冲区对象
StringBuffer sb = new StringBuffer() ;

//给字符串缓冲区添加元素
//使用链式编程一步走
sb.append("hello").append(true).append('A').append(12.345F).append("爱我") ;


//public StringBuffer insert(int offset,String str):在指定位置插入一个新的字符串str
sb.insert(5, "world");

// public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回字符串缓冲区本身
//需求:我要删除该缓冲区中e这个字符
sb.deleteCharAt(1) ;
// //需求:我要删除该字符串缓冲区中第一个l这个字符
sb.deleteCharAt(1);

//public StringBuffer delete(int start,int end):删除从指定位置开始,到指定位置接收,包前不包后
sb.delete(3, 8) ;//删除:helloworldjava
//public StringBuffer replace(int start,int end,String str)替换功能
sb.replace(5, 10, "节日快乐");
//public StringBuffer reverse()反转功能
sb.reverse() ;
// public String substring(int start,int end)截取功能
String s2 = sb.substring(5, 10) ;
System.out.println("s2:"+s2);
System.out.println("sb:"+sb);
}
}