String、StringBuilder、StringBuffer区别

String、StringBuilder、StringBuffer区别

面试官:请你谈谈StringStringBuilderStringBuffer区别
作为经典Java八股,是面试必考的热门点。
下面让我们一起来看一下他们的区别吧!
主要是测试他们的效率和应用场景,具体语法不在此展开。
看完这篇文章和面试官对答如流!
后续会从底层源码剖析区别,喜欢的小伙伴关注一下!

测试代码

/**
 * @author 寸铁
 * @version 1.0
 **/
public class StringVsStringBuilderVsStringBuffer {
    public static void main(String[] args) {
        long startTime = 0L;
        long endTime = 0L;
        StringBuffer buffer = new StringBuffer();
        
        //测试数据(可多组测试,对比处理结果)
        int n = 100000;
        //StringBuffer的测试时间
        startTime = System.currentTimeMillis();
        for(int i = 0; i < n; i++){
            buffer.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuffer的执行时间:" + (endTime - startTime));

        StringBuilder builder = new StringBuilder();
        //StringBuilder的测试时间
        startTime = System.currentTimeMillis();
        for(int i = 0; i < n; i++){
            builder.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuilder的执行时间:" + (endTime - startTime));
        String text = "";
        //String的测试时间
        startTime = System.currentTimeMillis();
        for(int i = 0; i < n; i++){
            text += i;
        }
        endTime = System.currentTimeMillis();
        System.out.println("String的执行时间:" + (endTime - startTime));
    }
}

实测结果:

测试数据为2000

String、StringBuilder、StringBuffer区别_第1张图片

测试数据为60000

String、StringBuilder、StringBuffer区别_第2张图片

测试数据为100000

String、StringBuilder、StringBuffer区别_第3张图片

处理效率:StringBuilder>StringBuffer>String

并且随着处理数据的增大,处理效率差距越来越大!!!

结论

  1. 如果字符串存在大量的修改操作,一般使用StringBufferStringBuilder
  2. 如果字符串存在大量的修改操作,并在单线程(线程不安全)的情况下,使用StringBuilder
  3. 如果字符串存在大量的修改操作,并在多线程(线程安全)的情况下,使用StringBuffer
  4. 如果字符串很少修改,被多个对象引用,使用String,如配置信息。(底层实际上是对常量池字符串的引用)

喜欢的小伙伴点点关注!


往期回顾

不清楚蓝桥杯考什么的点点下方

考点秘籍

想背纯享模版的伙伴们点点下方

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

蓝桥杯省一你一定不能错过的模板大全(第三期)

蓝桥杯省一你一定不能错过的模板大全(第四期)!!!

想背注释模版的伙伴们点点下方

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

蓝桥杯上岸每日N题 第一期(一)!!!

蓝桥杯上岸每日N题第一期(二)!!!

蓝桥杯上岸每日N题第一期(三)!!!

蓝桥杯上岸每日N题第二期(一)!!!

蓝桥杯上岸每日N题第三期(一)!!!

蓝桥杯上岸每日N题 第四期(最少刷题数)!!!

蓝桥杯上岸每日N题 第五期(山)!!!

蓝桥杯上岸每日N题 第六期(求阶乘)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第八期 (全球变暖)!!!

蓝桥杯每日N题 (消灭老鼠)

蓝桥杯每日N题(杨辉三角形)

蓝桥杯每日N题 (砝码称重)

蓝桥杯上岸每日N题(鸡尾酒)

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方

填空题

竞赛干货

算法竞赛字符串常用操作大全

蓝桥杯上岸必刷!!!(模拟/枚举专题)

蓝桥杯上岸必背!!! (第三期 DP)

蓝桥杯上岸必背!!!(第四期DFS)

蓝桥杯上岸必背!!!(第五期BFS)

蓝桥杯上岸必背!!!(第六期树与图的遍历)

蓝桥杯上岸必背!!!(第七期 最短路算法)

蓝桥杯上岸必背!!!(第八期 简单数论)

蓝桥杯上岸必刷!!!(进制、数位专题)

蓝桥杯上岸考点清单 (冲刺版)!!!

蓝桥杯上岸必背模板 (纯享版)

你可能感兴趣的:(八股,java,String,StringBuilder,StringBuffer,效率,测试)