Java StringBuilder类(为什么更高效、常用方法、构造器)

2023-11-18

一、引言

为什么要引入StringBuilder类

提高字符串操作效率,尤其是涉及大量字符串拼接

//获取1970年1月1日0时0分0秒到现在所经过的毫秒值
        long start=System.currentTimeMillis();

        String s=" ";
        for (int i = 1; i <=100000; i++) {
            s+=i;
        }
        long end=System.currentTimeMillis();
        System.out.println(end-start);//2040

使用String从1拼接到100000耗时2040ms

        long start=System.currentTimeMillis();
        StringBuilder sb=new StringBuilder();
        for (int i = 1; i <=100000 ; i++) {
            sb.append(i);
        }
        long end=System.currentTimeMillis();
        System.out.println(end-start);//2

使用StringBuilder从1拼接到100000耗时2ms

综上,使用StringBuilder可以大大提高字符串操作效率

二、StringBuilder类特点
  1. StringBuilder是一种可变的字符序列
  2. StringBuilder是字符串的缓冲区, 我们可以将其理解为是一种容器,这个容器可以存储任意数据类型,但只要进入这个容器,会全部变成字符串
        StringBuilder stringBuilder=new StringBuilder();
        stringBuilder.append(100);
        stringBuilder.append('c');
        stringBuilder.append(12.3);
        stringBuilder.append(true);
        stringBuilder.append("我爱中国");

        System.out.println(stringBuilder);//100c12.3true我爱中国
三、StringBuilder构造方法

public StringBuilder():创建一个空的字符串缓冲区(容器),初始容量是16个字符,会自动扩容
public StringBuilder(String str):创建一个字符串缓冲区, 并初始化好指定的参数内容

        //空参构造
        StringBuilder sb=new StringBuilder();
        sb.append("1234567891234567891");
        System.out.println(sb);//1234567891234567891
        //带参构造,初始化
        StringBuilder stringBuilder=new StringBuilder("abc");
        System.out.println(stringBuilder);//abc
四、StringBuilder常用方法

在这里插入图片描述

public StringBuilder append (任意类型):添加数据,并返回对象本身

        StringBuilder sb=new StringBuilder();
        StringBuilder sb2 = sb.append("abc");
        StringBuilder sb3 = sb.append("def");
        StringBuilder sb4 = sb.append("ghi");

        System.out.println(sb==sb2);//true
        System.out.println(sb2==sb3);//true
        System.out.println(sb3==sb4);//true
        System.out.println(sb4==sb);//true

        System.out.println(sb);//abcdefghi

public StringBuilder reverse():反转容器中的内容

        StringBuilder sb=new StringBuilder("12345678");
        sb.reverse();
        System.out.println(sb);//87654321

public int length​():返回长度 ( 字符出现的个数)
public String toString​():通过toString()就可以实现把StringBuilder转换为String

案例:判断一个字符串是否为对称字符

    public void method(String s){
        //将String转换为StringBuilder,为了调内部的反转方法
        StringBuilder stringBuilder=new StringBuilder(s);
        stringBuilder.reverse();
        //判断反转后内容与原来是否一样
        if(s.equals(stringBuilder.toString())){
            System.out.println("是对称字符串");
        }else {
            System.out.println("不是对称字符串");
        }
    }
五、StringBuilder为什么高效率

在这里插入图片描述
在这里插入图片描述

六、StringBuffer类

StringBuffer类使用方法与StringBuilder一样,但是对多线程更为安全,留一个小问题在这里,为什么更为安全。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java StringBuilder类(为什么更高效、常用方法、构造器) 的相关文章

随机推荐

  • c++ queue用法 入门必看 超详细

    1 queue的作用 说到queue 大家一定会想到stack 同样是简单易用的数据结构之一 queue就是队列的意思 像大家日常排队一样 先排的人先用 stack则是相反的 后来的先用 这就有了queue先进先出 stack后进先出的说法
  • 解决表情包乱码

    问题描述 在 Web 应用或移动App中 我们经常需要显示表情符号 但表情符号包含许多非ASCII字符 不能直接在文本中传输 所以通常会转换为HTML实体编码进行传输和存储 如常见的微笑表情 会编码为 但是后续读取网络返回的文本内容时 如果
  • Kafka——集群

    文章目录 集群 1 搭建个集群 2 集群发送消息 3 集群消费 3 1 Procuder 3 2 Consumer 4 消费顺序 集群 对于kafka来说 一个单独的broker意味着kafka集群中只有一个节点 要想增加kafka集群中的
  • 计算机操作系统--UNIX操作系统

    UNIX操作系统 UNIX操作系统是一种多用户 多任务的分时操作系统 它由最内层的硬件提供基本服 务 内核提供全部应用程序所需的各种服务 UNIX文件系统 UNIX文件系统采用树形带交叉勾连的目录结构 根目录即为 非叶节点是目录 文件 叶节
  • DMA 突发模式

    这里的4个节拍 8个节拍 16个节拍的增量突发传输要如何解释 DMA传输需要用到总线矩阵 有个总线仲裁管理总线事务 由它来控制该谁谁用总线 普通的DMA传输可能传一个数据就必须跟总线仲裁提要求 总线仲裁才来安排传输 如果是增量突发传输 就是
  • 全局网络端口配置

    1 查询网络通路情况 curl cip cc 2 对网络进行配置 指定端口 export http proxy socks5 127 0 0 1 7890 export https proxy socks5 127 0 0 1 7890 查
  • openGL API glGenSamplers 详解

    暂时先放openGL官方文档的解释 后面我会加入中文翻译 Name glGenSamplers generate sampler object names C Specification void glGenSamplers GLsizei
  • 【开发工具】JAVA性能分析:3、超详细的JProfiler快照分析(官方中文版)

    Snapshots 快照分析 到目前为止 我们只查看了JProfiler GUI从配置文件JVM中运行的性能分析代理获取数据的实时会话 JProfiler还支持将所有分析数据写入文件的快照 在以下几种情况下 这可能是有利的 您可以自动记录分
  • Java中如何将Set转List呢?

    转自 Java中如何将Set转List呢 下文笔者讲述Java中Set转List的方法分享 如下所示 实现思路 方式1 借助ArrayList进行转换 方式2 借助List实现类的addAll 方法 例 Map
  • 栈之中缀表达式转后缀表达式

    题目描述 就是把我们平常写的运算表达式换成另外一种表达式 运算符前面两个数字执行相关操作 用图说明一下 比如3 2 gt 3 2 比如3 3 2 gt 3 3 2 再比如 3 3 2 2 3 gt 3 3 2 2 3 程序设计思路 特殊情况
  • Xftp5连接linux时,服务器发送了一个意外的数据包。received:3,expected:20

    Xftp5连接linux时 服务器发送了一个意外的数据包 received 3 expected 20的解决方法 xtfp5连接要点 主机 H 可在虚拟机中使用ifconfig进行查看 用户名使用who进行查看 解决方法 进入文本文件 cd
  • 自然语言处理spaCy--训练一个词性标注模型

    自然语言处理spaCy 训练一个词性标注模型 一 什么是词性标注 1 引入库 2 使用百度LAC模块进行词性标注 3 模型训练 完整代码 总结 一 什么是词性标注 词性标注的全称为Part Of Speech tagging 顾名思 义 词
  • Elasticsearch顶尖高手系列-快速入门篇

    快速入门篇课程介绍 Elasticsearch 是目前行业中非常热门的一个技术 Elasticsearch是一种分布式的海量数据搜索与分析的技术 可以用于电商网站 门户网站 企业IT系统等各种场景下的搜索引擎 也可以用于对海量的数据进行近实
  • Android AES加密算法及其实现

    昨天老大叫我看看android加密算法 于是网上找了找 找到了AES加密算法 当然还有MD5 BASE64什么的http snowolf iteye com blog 379860这篇文章列举了很多 但是基本都是j2se平台的 androi
  • python开源报表系统详细操作流程_手把手教你实现自动化报表系统

    今天给大家安利一套自动化报表的实现过程 说到报表 大家脑海里一定浮现了各种高大上的财务报表 不管他们如何实现的 本文却要教你实现自己的报表系统 对于土豪公司来说 这些都是小case 因为商业的工具平台挺多的 选的都头疼 对于小企业 如果不想
  • elf.h

    http en wikipedia org wiki Executable and Linkable Format http www ouah org RevEng x430 htm Format of an ELF executable
  • keytool生成BKS格式的私钥跟信任证书

    Andrid生成SSL证书 第一步 为服务器生成证书库 keytool genkey alias roomcastServer keypass 123456 keyalg RSA keysize 1024 validity 36500 ke
  • JS根据时区获取对应时间

    安装插件 luxon yarn add luxon 页面使用 引入DateTime类 import DateTime from luxon let c DateTime fromObject zone 传入时区 zone America L
  • 操作系统9-文件系统,I/O子系统

    大纲 文件系统和文件 文件描述符 目录 文件别名 文件系统种类 虚拟文件系统 文件缓存和打开文件 文件分配 空闲空间管理 I O子系统特点 结构 传输 冗余磁盘阵列RAID 哟西太太太太太激动了 算是真正意义上的第一次完整严谨写了 博客 笔
  • Java StringBuilder类(为什么更高效、常用方法、构造器)

    StringBuilder类 一 引言 二 StringBuilder类特点 三 StringBuilder构造方法 四 StringBuilder常用方法 五 StringBuilder为什么高效率 六 StringBuffer类 一 引