一、StringBuffer和StringBuilder

1.StringBuffer是什么?

答:是一个字符串缓冲区,工作原理:预先在内存中申请一块空间以容纳字符序列,如果预留的空间,则进行自动扩容,以容纳更多的字符序列。

2.StringBuffer\StringBuilder和String最大的区别

String是不可以变的字符序列,存储字符串常量池中

StringBuffer底层是一个char数组,但是该char数组是可以变的,并且可以自动扩容

3.StringBuffer和StringBuilder的默认初始化容量是16

4.如何优化StringBuffer和StringBuilder

最好在创建StringBuffer之前,预测StringBuffer的存储字符数量,然后再创建StringBuffer的时候采用指定初始化容量的方式创建StringBuffer,为了减少底层数组的拷贝,提高效率。

5.StringBuffer和StringBuilder的区别?

StringBuffer是线程安全的,即可以在多线程的环境中使用,是安全的。

StringBuilder是非线程安全的,即在多线程的环境中使用这个类可以会出现问题。


package com.bjpowernode.java_learning;

​

public class D75_1_StringBufferAnalysis {

  public static void main(String [] args) {

    //创建字符串缓冲区对象

    StringBuffer s1 = new StringBuffer();////这个类的参数里面可以传入整数,代表初始化多大的空间,如果不写,默认就是16

    //可以向StringBuffer中追加字符串

    String[] ins = {"Physical","music","sleep","gourmet"};

    //推荐字符串频繁拼接使用StringBuffer和StringBuilder,不要使用String

    for(int i =0;i<ins.length;i++) {

      if(i==ins.length-1) {

        s1.append(ins[i]);

      }else {

        s1.append(ins[i]);

        s1.append(",");

      }

    }

    System.out.println(s1);

  }

}

二、源码:

D75_1_StringBufferAnalysis.java

https://github.com/ruigege66/Java/blob/master/D75_1_StringBufferAnalysis.java

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载75-StringBuffer和StringBuilder的更多相关文章

  1. JAVA String、StringBuffer、StringBuilder类解读

    JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...

  2. Java String,StringBuffer和StringBuilder的区别

    [可变与不可变] String是字符串常量,不可变. StringBuffer和StringBuilder是字符串变量,可变. [执行速度方面] StringBuilder > StringBu ...

  3. Java String、StringBuffer、StringBuilder有什么区别

    ① String是Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑.它是典型的immutable类,被声明成final class,所有属性也都是final的,由于它的不可变性,类 ...

  4. java中String,StringBuffer与StringBuilder的区别??

    本文着重介绍下,应该在何时恰当的使用string,stringbuffer,stringbuilder. 1,执行速度 StringBuilder >  StringBuffer  >  ...

  5. [Java]String、 StringBuffer、StringBuilder的区别

    一.异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer.StringBuilder 长度是可变的; 3) StringBuffer ...

  6. Java基础(四) StringBuffer、StringBuilder原理浅析

    StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢? 关于String的讲解请看Java基础 ...

  7. JAVA面试题 StringBuffer和StringBuilder的区别,从源码角度分析?

    面试官Q1:请问StringBuffer和StringBuilder有什么区别? 这是一个老生常谈的话题,笔者前几年每次面试都会被问到,作为基础面试题,被问到的概率百分之八九十.下面我们从面试需要答到 ...

  8. 【java基础】java字符串之StringBuffer和StringBuilder

    [一]简述区别 package com.sxf.test.string; public class StringBufferStringBuilderTest { public static void ...

  9. Java ——String 类 StringBuffer 和 StringBuilder类 随机字符

    本节重点思维导图 String 类 创建字符串 String str = "I love ai"; 在代码中遇到字符串常量时,"I love ai",编译器会使 ...

  10. Java中String,StringBuffer与StringBuilder的差别

    String 字符串常量: StringBuffer 字符串变量〈缓冲区〉(线程安全): StringBuilder 字符串变量〈缓冲区〉(非线程安全): 简要的说, String 类型和 Strin ...

随机推荐

  1. css实现渐变字体和流光字体

    这是段渐变文本 .text{ font-size: 30px; font-weight: bold; background-image: linear-gradient(#ed3f27, #9b099 ...

  2. 【WPF学习】第四十一章 变换

    通过使用变换(transform),许多绘图任务将更趋简单:变换是通过不加通告地切换形状或元素使用的坐标系统来改变形状或元素绘制方式的对象.在WPF中,变换由继承自System.Windows.Med ...

  3. 用pyinstaller打包时的图标问题

    前言 因为昨天重新研究了下python的打包方法,今天一番准备把之前写的一个pdf合并软件重新整理一下,打包出来. 但在打包的过程中仍然遇到了一些问题,半年前一番做打包的时候也遇到了一些问题,现在来看 ...

  4. SpingBoot错误信息处理及原理

    SpringBoot错误信息处理机制 在一个web项目中,总需要对一些错误进行界面或者json数据返回,已实现更好的用户体验,SpringBoot中提供了对于错误处理的自动配置 ErrorMvcAut ...

  5. postman之下载文件

    前言 小伙伴们在实际的测试工作中是否遇到过下载的接口呢,例如网盘的项目就涉及到上传和下载的接口了,那么我们如何利用postman对下载接口进行测试呢?下面我们一起来学习吧! 练习案例:下载接口:htt ...

  6. sparc v8 汇编语言语法

    1.3.1 Labeling Format Symbol names beginning with a dot (.) are assumed to be local symbols. Names b ...

  7. 多版本python创建虚拟环境

    不表示默认的python使用 mkvirtualenv -p c:\python27\python.exe  test1,即 mkvirtualenv -p  要安装的版本的python.exe路径  ...

  8. 珠峰-架构6-es6

    let aa = ; { console.log(aa); } // ----- let aa = ; { console.log(aa); // 报错 aa is not defined let a ...

  9. form表单 post 请求打开新页面

    function postOpenWindow(URL, PARAMS, target) { if(target == null) target = "_blank"; var t ...

  10. 基于HttpURLConnection的接口调用,支持GET&POST

    单位要做一个多级部署平台,大概意思就是一级系统可以监控下属地域的数据也可管理本地的数据.之前做短信猫用过httpClient请求,与此大同小异.封装了一个两种请求方式的工具类. package com ...