Java:StringBuffer StringBuilder 使用大全与运算速度比较

蔚落 2022-11-30 04:28 222阅读 0赞

对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
在这里插入图片描述

  1. public class String_Buffer {
  2. public static void main(String[] args) {
  3. // 创建StringBuffer对象
  4. StringBuffer sbf = new StringBuffer("门前大桥下,");
  5. // 追加字符串常量
  6. sbf.append("游过一群鸭,");
  7. // 追加StringBuffer对象
  8. StringBuffer tmp = new StringBuffer("快来快来数一数,");
  9. sbf.append(tmp);
  10. // 追加整型变量
  11. int x = 24678;
  12. sbf.append(x);
  13. // 输出
  14. System.out.println(sbf.toString());
  15. sbf.setCharAt(3, 'A'); // 将索引为3的字符改成'A'
  16. sbf = sbf.insert(5, "F"); //在索引为5的位置插入"F",将返回值赋给sbf自己
  17. System.out.println("修改后的值是:" + sbf);
  18. sbf = sbf.reverse();// 将字符序列sbf反转
  19. System.out.println("反转之后的值为:" + sbf);
  20. sbf = sbf.delete(3, 6); //删除从索引3开始至索引6之前的内容
  21. System.out.println("删除之后的值为:"+sbf);
  22. System.out.println("\n---********---\n");
  23. int lenght = sbf.length();// 获取字符串序列的长度
  24. char chr = sbf.charAt(7); // 获取索引为7的字符
  25. int index = sbf.indexOf("A");// 获取字符串所在的索引位置
  26. String substr = sbf.substring(0, 2);// 截取从索引0开始至索引2之间的字符串
  27. StringBuffer tmpe = sbf.replace(2, 5, "6543");// 将从索引2开始至索引5之间的字符序列替换成"1234"
  28. System.out.println("sbf的长度为:" + lenght);
  29. System.out.println("索引为7的字符为:" + chr);
  30. System.out.println("A字符串的索引位置为:" + index);
  31. System.out.println("索引0开始至索引2之间的字符串:" + substr);
  32. System.out.println("替换后的字符串为:" + tmpe);
  33. }
  34. }

在这里插入图片描述

  1. public class String_Builder{
  2. public static void main(String[] args) {
  3. StringBuilder sbd = new StringBuilder();
  4. System.out.println("sbd的原值为空");
  5. sbd.append("我是StringBuilder类");
  6. System.out.println("sbd追加字符串:" + sbd);
  7. int length = sbd.length();
  8. System.out.println("sbd的长度为:" + length);
  9. sbd = sbd.insert(length - 1, "123456");
  10. System.out.println("插入字符串:" + sbd);
  11. sbd = sbd.delete(sbd.length() - 1, sbd.length());
  12. System.out.println("删除最后一个字:" + sbd);
  13. sbd = sbd.reverse();
  14. System.out.println("反序输出:" + sbd);
  15. }
  16. }

在这里插入图片描述

  1. public class String_Time{
  2. public static void main(String[] args) {
  3. String str = ""; // 创建空字符串
  4. // 定义对字符串执行操作的起始时间
  5. long starTime = System.currentTimeMillis();
  6. for (int i = 0; i < 10000; i++) {
  7. // 利用for循环执行10000次操作
  8. str = str + i; // 循环追加字符串
  9. }
  10. long endTime = System.currentTimeMillis(); // 定义对字符串操作后的时间
  11. long time = endTime - starTime; // 计算对字符串执行操作的时间
  12. System.out.println("String循环1万次消耗时间:" + time); // 将执行的时间输出
  13. StringBuffer builder = new StringBuffer(""); // 创建字符串生成器
  14. starTime = System.currentTimeMillis(); // 定义操作执行前的时间
  15. for (int j = 0; j < 100000; j++) {
  16. // 利用for循环进行操作
  17. builder.append(j); // 循环追加字符
  18. }
  19. endTime = System.currentTimeMillis(); // 定义操作后的时间
  20. time = endTime - starTime; // 追加操作执行的时间
  21. System.out.println("StringBuffer循环10万次消耗时间:" + time); // 将操作时间输出
  22. StringBuilder builder2 = new StringBuilder(""); // 创建字符串生成器
  23. starTime = System.currentTimeMillis(); // 定义操作执行前的时间
  24. for (int j = 0; j < 100000; j++) {
  25. // 利用for循环进行操作
  26. builder2.append(j); // 循环追加字符
  27. }
  28. endTime = System.currentTimeMillis(); // 定义操作后的时间
  29. time = endTime - starTime; // 追加操作执行的时间
  30. System.out.println("StringBuilder循环10万次消耗时间:" + time); // 将操作时间输出
  31. }
  32. }

结果:运算速度:String < StringBuffer < StringBuilder
在这里插入图片描述在这里插入图片描述

发表评论

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

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

相关阅读

    相关 JavaScript比较运算

    等值检测 等值检测的目的在于判断两个变量是否相同或相等。我们说相同与不相同,是指运算符“===”和“!==”的运算效果;说相等与不相等,是指运算符“==”和“!=”的运算