Java学习之旅(二十):字符串生成器

创建成功的字符串对象,其长度一般来说是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符串或新字符的目的,但是“+”会产生一个新的 String 实例,会在内存中创建新的字符串对象。如果重复得对字符串进行修改,将极大地增加系统开销。鉴于此,J2SE 5.0 新增了可变的字符序列 String-Builder 类,大大地提高了频繁增加字符串的效率。


public class test {

    public static void main(String[] args) {

        String str = "";        //创建空字符串
        //定义对字符串执行操作的开始时间
        long startTime = System.currentTimeMillis();
        //for 循环追加字符串
        for (int i = 0; i < 10000; i++) {
            str = str + i;
        }
        //定义对字符串执行操作的结束时间
        long endTime = System.currentTimeMillis();
        //定义开始时间与结束时间的时间差
        long timeDiff = endTime - startTime;
        System.out.println("String消耗时间:" + timeDiff);
        //String Builder
        StringBuilder strBuilder = new StringBuilder("");
        long startTimeStr = System.currentTimeMillis();
        for (int j = 0; j < 10000; j++) {
            strBuilder.append(j);
        }
        long endTimeStr = System.currentTimeMillis();
        long timeDiffStr = endTimeStr - startTimeStr;
        System.out.println("String Builder消耗时间:" + timeDiffStr);

    }

}

以上代码可以看出这两种操作的执行时间相差很大,如果在程序中频繁地附加字符串,建议使用 StringBuilder。新创建的 StringBuilder 对象初始容量是16个字符,可以自行指定初始长度。如果附加的字符超过可容纳的长度,则 StringBuilder 对象将自动增加长度以容纳被附加的字符。若要使用 StringBuilder 最后输出字符串结果,可使用 toString() 方法。利用 StringBuilder 类中的方法可动态地执行添加、删除和插入等字符串地编辑操作。该类的常用方法如下:

(1)append() 方法

该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如 int、boolean、char、String、double 或者另一个字符串生成器等。语法为:

append(content);

其中,content 表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。

(2)insert(int offset, arg)方法

该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的多个重载形式,可实现向字符串生成器中插入 int、float、char 和 boolean 等基本数据类型或其他对象。语法为:

insert(int offset, arg);
  • offset:字符串生成器的位置。该参数必须大于等于0,且小于等于此序列的长度。
  • arg:将插入至字符串生成器的位置。该参数可以是任何的数据类型或其他对象。

(3)delete(int start, int end) 方法

该方法用于移除子字符串中的字符。该字符串从指定的 start 处开始,一直到索引 end - 1 处的字符,如果不存在这种字符,则一直到序列尾部。如果 start 等于 end,则不发生任何更改。语法为:

delete(int start, in end);
  • start:将要删除的字符串的起点位置
  • end:将要删除的字符串的终点位置

public class test {

    public static void main(String[] args) {

        // append()方法
        StringBuilder strAppend = new StringBuilder("Hello");
        System.out.println("Append:" + strAppend.append(" World !"));
        // insert()方法
        StringBuilder strInsert = new StringBuilder("Hello");
        System.out.println("Insert:" + strInsert.insert(5, " World !"));
        // delete()方法
        StringBuilder strDelete = new StringBuilder("Hello World !");
        System.out.println("Delete:" + strDelete.delete(5, 13));

    }

}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值