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

傷城~ 2022-12-19 13:26 274阅读 0赞

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

  1. public class test {
  2. public static void main(String[] args) {
  3. String str = ""; //创建空字符串
  4. //定义对字符串执行操作的开始时间
  5. long startTime = System.currentTimeMillis();
  6. //for 循环追加字符串
  7. for (int i = 0; i < 10000; i++) {
  8. str = str + i;
  9. }
  10. //定义对字符串执行操作的结束时间
  11. long endTime = System.currentTimeMillis();
  12. //定义开始时间与结束时间的时间差
  13. long timeDiff = endTime - startTime;
  14. System.out.println("String消耗时间:" + timeDiff);
  15. //String Builder
  16. StringBuilder strBuilder = new StringBuilder("");
  17. long startTimeStr = System.currentTimeMillis();
  18. for (int j = 0; j < 10000; j++) {
  19. strBuilder.append(j);
  20. }
  21. long endTimeStr = System.currentTimeMillis();
  22. long timeDiffStr = endTimeStr - startTimeStr;
  23. System.out.println("String Builder消耗时间:" + timeDiffStr);
  24. }
  25. }

20201108114001197.png

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

(1)append() 方法

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

  1. append(content);

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

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

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

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

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

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

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

    public class test {

    1. public static void main(String[] args) {
    2. // append()方法
    3. StringBuilder strAppend = new StringBuilder("Hello");
    4. System.out.println("Append:" + strAppend.append(" World !"));
    5. // insert()方法
    6. StringBuilder strInsert = new StringBuilder("Hello");
    7. System.out.println("Insert:" + strInsert.insert(5, " World !"));
    8. // delete()方法
    9. StringBuilder strDelete = new StringBuilder("Hello World !");
    10. System.out.println("Delete:" + strDelete.delete(5, 13));
    11. }

    }

20201108121647348.png

发表评论

表情:
评论列表 (有 0 条评论,274人围观)

还没有评论,来说两句吧...

相关阅读