当前位置: 首页 > news >正文

【Java学习笔记】SringBuffer类(重点)

StringBuffer(重点

1. 基本介绍

2. 结构关系图

在这里插入图片描述

(1) StringBuffer 的直接父类AbstractStringBuilder

(2) StringBuffer 实现了 Serializable,即 StringBuffer 的对象可以串行化即可以在网络中传输

(3) 在父类中 AbstractStringBuilder 有属性 char[] value, 不是 final

(4)数组的起始大小是 16,如果大于 16 个字符长度,会自动扩容

(5) 该 value 数组存放字符串内容,引出存放在堆中的

(6) 因为 StringBuffer 字符内容是存在 char[] value, 所以在变化(增加/删除)时不用每次都更换地址(即不是每次创建新对象),所以效率高于 String


一、StringStringBuffer的相互转换

(1)String—>StringBuffer

String str = "jackson";// 方法一
StringBuffer stringBuffer = new StringBuffer(str);// 方法二
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);

(2)StringBuffer—>String

StringBuffer stringBuffer = new StringBuffer("jackson");// 方法一
String str1 = stringBuffer.toString();// 方法二
String str2 = new String(stringBuffer);

二、StringBuffer类的常用方法

方法介绍

示例代码

StringBuffer stringBuffer = new StringBuffer("hello~");System.out.println("stringBuffer --> " + stringBuffer);// append
stringBuffer.append("world");
System.out.println("append(\"world\") --> " + stringBuffer);//delete
stringBuffer.delete(6,11);
System.out.println("delete(6,11) --> " + stringBuffer);// deleteCharAt()
stringBuffer.deleteCharAt(5);
System.out.println("deleteCharAt(5) --> " + stringBuffer);// insert()
stringBuffer.insert(5,"~world");
System.out.println("insert(5,\"~world\") --> " + stringBuffer);// subString()
System.out.println("stringBuffer.substring(5,11) --> " + stringBuffer.substring(5,11));// replace()
stringBuffer.replace(5,11,"");
System.out.println("replace(5,11,\"\") --> " + stringBuffer);// indexOf()
System.out.println("indexOf(\"l\") --> " + stringBuffer.indexOf("l"));// lastIndexOf()
System.out.println("lastIndexOf(\"l\") --> " + stringBuffer.lastIndexOf("l"));// reverse()
System.out.println("reverse() --> " + stringBuffer.reverse());

输出结果

stringBuffer --> hello~
append("world") --> hello~world
delete(6,11) --> hello~
deleteCharAt(5) --> hello
insert(5,"~world") --> hello~world
stringBuffer.substring(5,11) --> ~world
replace(5,11,"") --> hello
indexOf("l") --> 2
lastIndexOf("l") --> 3
reverse() --> olleh

三、小练习

题目:价格中小数点前的数字,每三位用逗号隔开

String price = "8123564.59";
StringBuffer sb = new StringBuffer(price);// 上面的两步需要做一个循环处理,才是正确的
for (int j = sb.lastIndexOf(".") - 3; j > 0; j -= 3) {sb = sb.insert(j, ",");
}System.out.println(sb);  // 8,123,564.59
http://www.xdnf.cn/news/917191.html

相关文章:

  • 集运维_安装linux,麒麟等系统_步骤
  • 64、js 中require和import有何区别?
  • Docker镜像无法拉取问题解决办法
  • natapp 内网穿透失败
  • n8n + AI Agent:AI 自动化生成测试用例并支持导出 Excel
  • 基于 TAPD 进行项目管理
  • Linux(14)——库的制作与原理
  • 第18节 Node.js Web 模块
  • Node.js: express 使用 Open SSL
  • 腾讯开源视频生成工具 HunyuanVideo-Avatar,上传一张图+一段音频,就能让图中的人物、动物甚至虚拟角色“活”过来,开口说话、唱歌、演相声!
  • C++之STL--list
  • LeetCode 239. 滑动窗口最大值(单调队列)
  • 【Hot 100】295. 数据流的中位数
  • 客户端和服务器已成功建立 TCP 连接【输出解析】
  • Doris 数据库深度解析:架构、原理与实战应用
  • 5.4.2 Spring Boot整合Redis
  • Cisco Packer Tracer 综合实验
  • 网页绘制表格
  • 8个AI软件介绍及其工作原理讲解
  • 基于功能基团的3D分子生成扩散模型 - D3FG 评测
  • Java编程中常见的条件链与继承陷阱
  • 60天python训练计划----day46 and day47
  • 比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
  • Faiss vs Milvus 深度对比:向量数据库技术选型指南
  • 在 Linux 中修改 Apache HTTP Server(httpd)默认端口的完整指南
  • 电路图识图基础知识-电动机制动控制电路(十八)
  • 【力扣】2434.使用机器人打印字典序最小的字符串
  • 计算机组成原理-总线
  • rabbit mq使用TTL和DLX实现延迟队列
  • ios苹果系统,js 滑动屏幕、锚定无效