码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • StringBuffer与StringBuilder[37]


    StringBuffer与StringBuilder[37]


    文章目录

    • StringBuffer与StringBuilder[37]
    • 一、StringBuffer
      • 1.概述
      • 2.代码演示
      • 3.StringBuffer部分方法
    • 二、StringBuilder
      • 1.概述
      • 2.代码演示
    • 三.小结



    一、StringBuffer

    1.概述

    StringBuffer:目的是用来解决字符串相加拼接时带来的性能问题(常量与变量);String拼接字符串会产生大量垃圾对象;
    其内部实现采用字符数组,默认数组长度为16,超过数组大小时,动态扩容算法是原来的长度*2+2;
    所以当我们预知到添加的数据长度时,建议使用带初始化容量的构造方法,来避免扩容.提高效率;

    2.代码演示

     String s1="a";
    String s2=s1+1+2+s1;//a12a:常量相加没有性能问题(编译期进行优化);
    System.out.println(s2);
    StringBuffer sb=new StringBuffer(20);//默认构造方法长度是16,大于即推荐使用带容量构造方法;
    sb.append(s1).append(1).append(2);//相加拼接字符
    System.out.println(sb);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.StringBuffer部分方法

    append(数据类型 b):添加;
    delete(int start,int end):删除指定位置的内容;
    indexOf(String str):字符串查询功能;
    insert(int offset,数据类型 b):在指定位置上增加一个内容;
    replace(int start,int end,String str):将指定范围的内容替换为其他内容;
    substring(int start,int end):截取指定范围字符串;
    reverse():字符串反转;

    二、StringBuilder

    1.概述

    StringBuilder:是StringBuffer的兄弟,一个可变的字符序列,用在字符串缓冲区被单个线程使用的时候,建议使用该类,因为它快;

    二者区别:
    StringBuffer是线程安全的,性能低,适合在多线程使用,jdk1.0后有的;
    StringBuilder是线程不安全的,性能高,适合单线程使用,jdk1.5后有的;

    2.代码演示

    String s1=null;
    for(int i=0;i<9;i++){
       s1+=i;//每次循环都会产生一个StringBuilder对象实现拼接,性能低,最好手动创建StringBuilder对象拼接
    }
    StringBuilder sbe=new StringBuilder(20);
    for (int j=0;j<9;j++){
       sbe.append(j);
    }
    System.out.println(sbe);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三.小结

    本章概述了java中的StringBuffer和StringBuilder的使用和区别,二者的选择可以根据项目中不同功能的实现而选择变动,都是处理字符串优秀工具;
    有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

  • 相关阅读:
    响应式网页开发方法与实践
    多神经网络模型联合训练,全连接神经网络模型
    操作系统题目收录(二)
    Android开发自定义实现炫酷的进度条
    电脑为什么会蓝屏的原因
    最新 robot framework安装
    测试老鸟总结,Allure测试报告-自动化测试详解,惊险避坑...
    信号的机制——信号处理函数的注册
    怎么剔除掉六十岁(退休)以上的人(python自动化办公)
    服务器安全怎么保障,主机安全软件提供一站式保护
  • 原文地址:https://blog.csdn.net/weixin_45539338/article/details/126798221
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号