• 常用类14:StringBuilder类应用。 String 、StringBuilder、StringBuffer比较


    String 、StringBuilder、StringBuffer比较

      1. StringBuilder和 StringBuffer非常类似,均代表可变的字符序列,而且方法 也一样
      1. String:不可变字符序列,效率低但是复用率高。
        请添加图片描述
      1. StringBuffer:可变字符序列、效率较高(增删)、线程安全
      1. StringBuilder:可变字符序列、效率最高、线程不安全(假如有多个线程使用,将会出现错误的读取(脏读等))
      1. String使用注意说明:
        • string s=“a“;//创建了一个字符串
        • s+=“b“;//实际上原来的”a“字符串对象已经丢弃了,现在又产生了一个字符 串s+“b”(也就是“ab“)。
        • 如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极 影响程序的性能=>结论:如果我们对 String做大量修改,不要使用 String

    效率: StringBuilder> StringBuffer> String
    package com.string;
    
    /**
     * @version 1.0
     * @anther 田毅
     */
    public class Compare {
        public static void main(String[] args) {
            Long startTime = 0L;
            Long endTime = 0L;
            StringBuffer buffer = new StringBuffer("");
            startTime = System.currentTimeMillis();
            for (int i = 0; i < 20000; i++) {// StringBuffer拼接20000次
                buffer.append(String.valueOf(i)); //String.valueOf(i)将int型转换为String
            }
            endTime = System.currentTimeMillis();
            System.out.println(" StringBufferl的执行时间:" + (endTime - startTime));
    
    
    
            StringBuilder builder = new StringBuilder("");
            startTime = System.currentTimeMillis();
            for (int i = 0; i < 20000; i++) {// StringBuffer拼接20000次
                builder.append(String.valueOf(i)); //String.valueOf(i)将int型转换为String
            }
            endTime = System.currentTimeMillis();
            System.out.println(" StringBuilder的执行时间:" + (endTime - startTime));
    
    
    
            String text = "";
            startTime = System.currentTimeMillis();
            for (int i = 0; i < 20000; i++) {// StringBuffer拼接20000次
                text = text + i; //String.valueOf(i)将int型转换为String
            }
            endTime = System.currentTimeMillis();
            System.out.println(" String的执行时间:" + (endTime - startTime));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    结果

    StringBufferl的执行时间:2
    StringBuilder的执行时间:1
    String的执行时间:138
    进程已结束,退出代码0

    String、 StringBuffer和 String Builder的选择

    请添加图片描述
    配置数据的密码/用户名/IP等等

  • 相关阅读:
    【含2023java面试题】深入解析JVM调优:解决OutOfMemoryError、内存泄露、线程死锁、锁争用和高CPU消耗问题
    pnpm入门教程
    给自己的信
    失业在家的6个月,我通过外包全款买了房:你看不起的行业,往往很赚钱
    针对海洋数据的管理三维gis软件系统有何优势
    Kali linux 下配置社会工程学工具包SET
    2023.09.03 学习周报
    Python实战项目:并夕夕版飞机大战(源码分享)(文章较短,直接上代码)
    clip:learning transferable visual models from natural language supervision
    CANoe.Diva配置模板的使用
  • 原文地址:https://blog.csdn.net/tianyi520jx/article/details/126591841