java_se StringBuffer

来源:互联网 发布:淘宝兼职被骗天涯论坛 编辑:程序博客网 时间:2024/06/05 19:56

1 StringBuffer:线程安全的可变字符序列
2面试题:
* StringBuffer和String 的区别?
* StringBuffer会构造一个字符串缓冲区,从内存角度考虑,一般情况使用StringBuffer比较多(在单线程程序中使用StringBulider替代
* StringBuffer:线程不安全,单线程单纯为了提供执行效率!)
* String:普通的一个字符串,从内存角度考虑,耗费空间!
*3 StringBuffer的构造方法:
* public StringBuffer ()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
* public StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区
* public StringBuffer(String str)
* 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。
*
* 4 常用的功能:
* public int length():获取字符串长度数
* public int capacity():获取当前字符串缓冲区的容量
5StringBuffer中的和添加有关的方法
* public StringBuffer append(int/String/char/boolean/double/float….):当前这个方法追加,给缓冲中追加数据,返回字符串缓冲区本身(经常使用的)
* public StringBuffer insert(int offset,String str):在某一个位置处去插入str这个字符串,返回字符串缓冲区本身(返回追加之后的) 注意当插入的数字不存在是就会出现StringIndexOutOfBoundsException
6StringBuffer的删除功能:
* public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回的是字符串缓冲区本身!
* public StringBuffer delete(int start,int end):删除从指定位置开始到指定位置结束的字符,返回的是字符串缓冲区本身!
* 7StringBuffer的反转功能:
* public StringBuffer reverse():将此字符串中的字符序列直接反转
* 8StringBuffer的替换功能:
* public StringBuffer replace(int start, int end,String str)
* 从指定位置开始到指定位置结束的字符用str子字符串去替代
* 注意:这个不用担心str比要替换的数目多,就是一定可以成功
* 9StringBuffer的截取功能:
* public String substring(int start):从指定位置默认截取到末尾,返回值是一个新的字符串
* public String substring(int start,int end):从指定位置开始截取到指定位置结束,包前不包后,返回一个新的字符串
*10String和StringBuffer作为形式参数
看完整代码

public class StringBufferDemo7 {    public static void main(String[] args) {        //定义两个字符串        String s1 = "hello" ;        String s2 = "world" ;        System.out.println(s1+"---"+s2);//hello---world        change(s1,s2) ;        System.out.println(s1+"---"+s2);//hello---world        //定义两个字符串缓冲区对象        StringBuffer sb1 = new StringBuffer("hello") ;        StringBuffer sb2 = new StringBuffer("world") ;        System.out.println(sb1+"---"+sb2);//hello---world        change(sb1,sb2);        System.out.println(sb1+"---"+sb2);//hello---worldworld        //缓冲区是不变    }    public static void change(StringBuffer sb1 ,StringBuffer sb2){        sb1 = sb2 ;  //缓冲区不变"world"        sb2.append(sb1) ;//worldworld    }    public static void change(String s1,String s2){        s1 = s2 ;        s2 = s1 + s2 ;    }}说明:String作为形式参数和基本类型是一样的,StringBuffer 分情况1 如果是=赋值的,则不会影响实参,如果是其它对于缓冲区操作的都会改变实参的

11面试题:
* String,StringBuffer,StringBuilder的区别?
*
* String:一个不可变的字符序列,StringBuffer:和StringBuilder是可变的不安全字符序列,在单个线程时候的时候(优先采用StringBuilder)
* 从线程角度考虑:
* StringBuilder线程不安全,不同步,执行效率高!它比StringBuffer要快!

原创粉丝点击