Java API 二

StringBuffer类和StringBuilder类也是java api重要的内容,本篇主要介绍这两类的方法及演示效果。

一.StringBuffer类

由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。为了方便对字符串进行修改,java提供了一个StringBuffer类(也被称之为字符串缓冲区)。StringBuffer类和String类的最大区别在于它的长度和内容都是可以进行改变的。StringBuffer类似一个字符容器,当在其中进行添加或删除字符时,并不会产生新的对象。

 为了方便读者理解,下面用具体的代码演示:

package Text4;
 
public class text {
    public static void main(String[] args) {
        System.out.println("1、添加-----------------");
        add();
        System.out.println("2、删除-----------------");
        remove();
        System.out.println("3、修改-----------------");
        alter();
    }
 
    private static void add() {
        StringBuffer sb=new StringBuffer();//创建一个字符串缓冲区
        sb.append("textzhz");//在末尾添加字符串
        System.out.println("append添加的结果:"+ sb);
        sb.insert(2,"123");//在指定位置插入字符串
        System.out.println("insert添加的结果:"+ sb);
 
    }
 
    private static void remove() {
        StringBuffer sb=new StringBuffer("textzhz");
        sb.delete(1,5);//指定范围删除
        System.out.println("删除指定范围结果:"+ sb);
        sb.deleteCharAt(2);//指定位置删除
        System.out.println("删除指定范围结果:"+ sb);
        sb.delete(0,sb.length());//清空缓冲区
        System.out.println("清空缓冲区的结果:"+ sb);
 
    }
 
    private static void alter() {
        StringBuffer sb=new StringBuffer("textzhz");
        sb.setCharAt(1,'p');//修改指定位置字符
        System.out.println("修改指定位置字符结果:"+ sb);
        sb.replace(1,3,"qq");//替换指定位置字符串或字符
        System.out.println("替换指定位置字符串或字符的结果:"+ sb);
        System.out.println("字符串反转结果:"+ sb.reverse());
    }
}

在代码块中,主要提及了添加、删除、修改这三大功能

        在添加功能中主要运用到了append()和insert()方法,其中append()是在字符串的末尾添加其他字符,而insert()是在指定的位置添加字符串;

        在删除功能中运用到了delete()和deleteCharAt()方法,delete()是删除指定的范围,deletecharAt()是删除指定的位置,计算好字符串的长度,delete()还能达到清空缓冲区的效果;

        在修改功能中运用到了setCharAt()、replace()和revers()方法,setCharAt()是修改指定位置字符,replace()主要是替换指定位置的字符,而revers()是实现反转效果的。

 

二、StringBuilder类

StringBuilder类跟StringBuffer类大同小异,两类的方法用处都是相同的,而且他们的对象都是可以被多次修改的,并不会产生新的未使用对象,StringBuilder类是JDK5中新加的类,它与StringBuffer类之间最大的不同在于StringBuilder的方法是非线程安全,也就是是,StringBuffer不能被同步访问,而StringBuilder类却可以。

        下面是两者之间的运行效率的对比

package Text4;
 
import static javax.management.Query.TIMES;
 
public class text1 {
    public static void main(String[] args) {
        text1.textString();
        text1.textStringBuffer();
        text1.textStringBuilder();
    }
    //String时间效率测试
    private static void textString() {
        long stareTime =System.currentTimeMillis();
        String str="";
        for (int i=0;i<TIMES;i++){
            str +="text";
        }
        long endTime=System.currentTimeMillis();
        System.out.println("String text usedTime: "+(endTime-stareTime));
    }
  //StringBuffer时间效率测试(线程安全)
    private static void textStringBuffer() {
        long stareTime =System.currentTimeMillis();
        StringBuffer str=new StringBuffer();
        for (int i=0;i<TIMES;i++){
            str.append("text");
        }
        long endTime=System.currentTimeMillis();
        System.out.println("StringBuffer text usedTime: "+(endTime-stareTime));
    }
    //StringBuilder时间效率测试(非线程安全)
    private static void textStringBuilder() {
        long stareTime =System.currentTimeMillis();
        StringBuilder str=new StringBuilder();
        for (int i=0;i<TIMES;i++){
            str.append("text");
        }
        long endTime=System.currentTimeMillis();
        System.out.println("StringBuilder text usedTime: "+(endTime-stareTime));
    }
 
}

String类、StringBuffer类和StringBuilder类三者之间有很多的相似之处,开发者在使用时应当注意三者之间的区别  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值