3、StringBuffer类

StringBuffer类

  1. java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删 很多方法与String相同,但StringBuffer是可变长度的 StringBuffer是一个容器
  2. StringBuffer 的直接父类是 AbstractStringBuilder
  3. StringBuffer 实现了 Serializable,即StringBuffer的对象可以串行化
  4. 在父类 AbstractStringBuilder 有属性 char[] value ,不是final
    该 value 数组存放 字符串内容,因此存放在堆中的
  5. StringBuffer 是一个 final 类,不能被继承
  6. 因为StringBuffer 字符内容是存在 char[] value,所以再变化(增加/删除)时,不用每次 都更换地址(即不是每次创建对象),所以效率高于 String
  7. String VS StringBuffer
  8. String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址, 效率极低 //private final char value[];
  9. StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以 更新内容,不用每次更新地址,效率极高 //char[] value; //这个放在堆
  10. StringBuffer的构造器
  11. StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符
  12. StringBuffer(CharSequence seq) public java.long.StringBuilder(CharSequence seq) 构造一个 字符串缓冲区,它包含与其指定的CharSequence 相同的字符。 (不常用)
  13. StringBuffer(int capacity) //capacity[容量] 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 即对 char[] 大小进行指定
  14. StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
//1. 创建一个大小为 16的 char[] ,用于存放字符内容
StringBuffer stringBuffer = new StringBuffer();
//2. 通过构造器指定 char[] 大小
StringBuffer sTringBuffer = new StringBuffer(100);
//3. 通过给一个String 创建 StringBuffer,char[] 大小就是 str.length() + 16
StringBuffer hello = new StringBuffer("hello");
  1. String 和 StringBuffer 相互转换
// String -> StringBuffer
String str = "hello tom";
// 方式1
// 注意:返回的才是StringBuffer对象,对str 本身没有影响
StringBuffer stringBuffer = new StringBuffer(str);
//方式2   使用的时append() 方法
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);
// StringBuffer -> String
StringBuffer stringBuffer3 = new StringBuffer("好好学习");
//方法1 使用StringBuffer提供的 toString方法
String s = stringBuffer3.toString();
//方式2:使用构造器来搞定
String s1 = new String(stringBuffer3);
  1. StringBuffer类常用方法
StringBuffer s = new StringBuffer("hello");
//增
s.append(',');
s.append("张三丰");
s.append("赵敏").append(100).append(true).append(10.5);
System.out.println(s);

//删
/*
    删除索引为 >=start &&
  1. 练习
String price = "8123564.59";
StringBuffer sb = new StringBuffer(price);
//int i = sb.lastIndexOf(".");
//sb = sb.insert(i - 3,",");
for (int i = sb.lastIndexOf("."); i > 3; i -= 3) {
    sb = sb.insert(i - 3,",");
}
System.out.println(sb);
//运行结果:8,123,564.59

Original: https://www.cnblogs.com/muzhe777/p/16705989.html
Author: 花er公子
Title: 3、StringBuffer类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585046/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 循序渐进nginx(三):日志管理、http限流、https配置,http_rewrite模块,第三方模块安装,结语

    日志管理 access_log error_log 日志文件切割 自定义错误页 http访问限流 限制请求数 语法 使用 限制连接数 语法 测试 补充: https配置 使用 生成…

    Java 2023年5月30日
    093
  • Java中CSS&JS篇基础笔记

    HTML就是由一组标签所组成的. HTML的字体标签: 属性:color,size,face h标签:标题标签. p标签:段落标签. b标签:加粗标签. i标签:斜体标签. u标签…

    Java 2023年6月5日
    085
  • 如何组装一个注册中心

    hello,大家好呀,我是小楼。今天不写BUG,来聊一聊注册中心。 标题本来想叫《如何设计一个注册中心》,但网上已经有好多类似标题的文章了。所以打算另辟蹊径,换个角度,如何 组装一…

    Java 2023年6月6日
    0103
  • Mysql学习

    显示字符集编码 mysql架构 逻辑架构 Client : 提供连接MySQL服务器功能的常用工具集 Server : MySQL实例,真正提供数据存储和数据处理功能的MySQL服…

    Java 2023年6月8日
    092
  • 【转】Java异常总结和Spring事务处理异常机制浅析

    异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。 Thor…

    Java 2023年5月29日
    081
  • 自定义视图(组合控件)

    前言 Android自定义控件主要分为两种,一种是通过继承View来实现自定义控件,另一种是通过组合已有到控件来实现自定义控件,上篇文章自定义视图(继承View)我们介绍了下继承V…

    Java 2023年6月7日
    092
  • Java后端代码规范与优化建议

    1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是f…

    Java 2023年5月29日
    073
  • Python模拟实现银行系统(平时的小练习)

    class Bankin_system: login = ”’ ******************************************** *** *** *** …

    Java 2023年6月9日
    085
  • Spring Security OAuth正式终止维护,已从官网下架

    Spring Security团队正式宣布 Spring Security OAuth终止维护。 目前官网的主页已经高亮提醒彻底停止维护。 旧的 Spring Security O…

    Java 2023年5月30日
    086
  • java: javamail 1.6.2 Create Receive Email using jdk 19

    尝试获取编码(pop3message.getEncoding()),则会获得此contentType(UTF-8一个) https://javaee.github.io/javam…

    Java 2023年5月29日
    089
  • java.util.HashMap$Values cannot be cast to java.util.List

    背景:获取map中所有value,用list强转接收报错 需求:用List接收map中的所有valus 方法: 一、错误代码 Original: https://www.cnblo…

    Java 2023年6月8日
    0104
  • 掌握这些Java基础知识,面试再也不难

    掌握这些Java基础知识,面试再也不难,这几天一直在公司忙于学习公司的业务,很难抽出时间记录博客。之前投的简历在上周周末进行了面试,中等大小的公司,以下是问到的面试题,之前有记录过…

    Java 2023年6月9日
    074
  • db2 创建function报错

    create function fun_fw_sfyczy(pi_operunitid varchar(2))returns varchar(2)LANGUAGE SQLBEGIN…

    Java 2023年6月13日
    081
  • JNPF3.4.2系统升级公告

    尊敬的引迈客户: 您好!为了给您提供更优质的服务,引迈信息将对JNPF快速开发平台进行优化,并于近期同步上线,新版本、新升级,全新体验,敬请期待! 本次优化涉及【在线开发】、【流程…

    Java 2023年6月5日
    086
  • 同一台电脑生成多份ssh私钥和公钥,映射多个GitHub账号

    当我们使用 Git 进行代码版本控制时,经常出现一台电脑需要连接多个Git 账号的情况,此时需要在一台电脑上生成多份 ssh 私钥和密钥,同时映射多个 Git 账号;这里我们需要同…

    Java 2023年6月5日
    068
  • 微服务Docker打包

    微服务Docker打包 现在的微服务时代,你的代码没个微服务、分布式人家都会觉得低端,当然!对于我们开发人员来说,掌握这些技术意味着涨薪。 ​ 我们项目中用到了多个微服务,我们上一…

    Java 2023年6月15日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球