A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙万利 中级黑马   /  2012-12-6 08:38  /  1202 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java升级三种情况:
1.提高效率
2.提高安全性
3.简化书写
String(字符串):
特性:一旦被初始化,就不能被改变
StringBuilder(线程不同步) 升级的结果(提高效率)
   将StringBuilder实例用于多线程是不安全的。如需要这样的同步,建议使用StringBuffer;
    单线程使用StringBuilder效率高;
StringBuffer(线程同步,安全的)
    StringBuffer是字符串缓冲区
    是一个容器(数据类型不确定,数据个数不确定,用StringBuffer比数组方便)
    特点:
    1.长度是可以变化的
    2.可以直接操作多个数据类型(append 添加什么类型都可以)
    3.最终会通过toString方法变成字符串

1.存储:
       StringBuffer append():将制定数据作为参数添加到已有数据的结尾处
       StringBuffer insert(index,数据):可以将数据插入制定在index位置
    2.删除
       StringBuffer delete(strat,end):删除缓冲区的数据,包含start,不包含end
       StringBuffer deleteCharAt(index):删除指定位置的字符
    3.获取
       char charAt()
        int indexOf(String str)
        int lastIndexOf(String str)
        int length()
        String subString(int start,int end)
    4.修改
       StringBuffer replace(start,end,string)
       void setCharAt(int index,char ch);
    5.反转
       StringBuffer reverse();
    6.将缓冲区中指定数据,存储到指定字符数组中
       void getChars(int srcBegin(字符串的起始位置),int srcEnd(字符串的结束位置),char[] dst,int dstBegin(字符数组的起始位置))
   
JDK1.5版本之后出现了StringBuilder
    StringBuffer 是线程同步
    StringBuilder是线程不同步(效率高)
    以后开发建议使用StringBuilder

下面是一小段代码来体现上面的方法:
class StringBufferDemo
{
    public static void main(String[] args)
    {
       StringBuffer sb = new StringBuffer();
       StringBuffer sb1 = sb.append("abc").append(34).append("def");
//方法调用链 返回值为StringBuffer对象
       sop(sb.toString());//返回结果为abc34def
       sop(sb1.toString());//返回结果为abc34def
        
       //sb.delete(1,3); sop(sb.toString());
       //清空缓冲区      sb.delete(0,sb.length());
       //删除单个元素       sb.deleteCharAt(2);
       //sb.replace(1,3,"hello");//替换
       //sb.setCharAt(2,'s');
       //sop(sb.toString());
       char[] ch = new char[6];
       sb.getChars(0,4,ch,1);
       for(int x=0;x<ch.length;x++)
       {
           sop("ch["+x+"]=:"+ch[x]);
       }
    }
    public static void sop(String str)
    {
       System.out.println(str);
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马